
 
解法
 
使用位运算:
 
- 不计算进位,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;
    }
}