本题的正确解法使用位运算。
假设a=5,b=4; 则a=0101, b=0100;
我们可以将a+b拆分成,无进位运算,和进位运算两部分。
其中异或运算可以进行无进位运算,=0101^0100 =0001
与运算可以进行进位运算,不过需要将运算的值加向左移一位,a&b=0101&0100 =0100
向左移一位:1000。
代码
int getSum(int a, int b) {
int sum=0
while(b!=0){
unsigned int carry = (unsigned int)(a & b) << 1;
a = a ^ b;
b = carry;
}
return a;
}