题目解析
371. 两整数之和
算法讲解
异或的本质就是无进位相加,但是我们需要处理进位,就需要知道哪一位上有进位,再让无进位相加的结果 + 进位即可,在重复这个过程,当进位等于0的时候,说明相加的过程已经结束
class Solution {
public:
int getSum(int a, int b) {
if(a == 0)return b;
if(b == 0)return a;
int ret = 0;
while(a && b)
{
//无进位相加
ret = a ^ b;
//处理进位 (a & b)是这一位上有进位,但是要加上进位,所以需要左移一位
b = (a & b) << 1;
a = ret;
}
return a;
}
};