思路:位运算
- (a&b)<<1 进位
- a^b 是非进位和 (不包含进位的结果)
- 另外,c++不支持负数的移位,需要加上转换为非负数后操作
注意: c++不支持
class Solution {
public:
int add(int a, int b) {
if (b == 0 || a == 0) {
return a^b;
}
return add(a ^ b, ((unsigned int)(a & b))<< 1);
}
};