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

不知道怎么做,照搬K佬思想。

 

举例:a=0101      b=0111过程为:

a=0101

b=0111

c= (a & b) << 1 = 1010

a^=b =0010

b=c   =1010

c= (a & b) << 1 = 0100

a^=b =1000

b=c   =0100

c= (a & b) << 1 = 0000

a^=b = 1100

b=c   = 0000循环结束

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

class Solution {
    public int add(int a, int b) {
        while(b != 0){
            int c = (a & b) << 1;
            a ^= b;
            b = c;
        }
        return a;
    }
}

 

posted @ 2021-03-29 19:39  星予  阅读(28)  评论(0)    收藏  举报