剑指 Offer 65. 不用加减乘除做加法

package leetcode;

public class offer_65 {
    //^ 亦或 ----相当于 无进位的求和
    //& 与 ----相当于求每位的进位数
    //a=b => (a^b)^((a&b))<<1
    public int add(int a, int b) {
        while(b!=0) {
            int c=(a^b);
            int d=(a&b)<<1;
            a=c;
            b=d;
        }
        return a;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        offer_65 off=new offer_65();
        System.out.println(off.add(1, 1));
    }

}

 

posted on 2022-03-22 10:39  一仟零一夜丶  阅读(14)  评论(0)    收藏  举报