解法
使用位运算:
- 不计算进位,a与b异或完成二进制加法
- 使用按位与计算哪一位相加会产生进位
- a b 相加结果与进位(按位与的结果左移一位)相加
- 循环结束条件:进位为0,也就是没有产生进位
class Solution {
public int add(int a, int b) {
int sum, carry;
do {
sum = a ^ b;
carry = (a & b) << 1;
a = sum;
b = carry;
} while(carry != 0);
return sum;
}
}