int getSum(int a, int b) {
return b==0? a:getSum(a^b, (a&b)<<1); //be careful about the terminating condition;
}
二进制位运算加法思路:
while(b)
{
int temp = (a&b)<<1;
a = a^b; //每bit位:0+1=1, 1+1=0, 0+0=0
b = temp ; //每bit位:1+1=10 表示进位。b==0时没有进位
}
return a;