371. 两整数之和
给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。
class Solution {
public:
int getSum(int a, int b) {
while (b != 0) {
// 计算进位:将 a 和 b 进行位与操作,然后左移 1 位。
unsigned int carry = (unsigned int)(a & b) << 1;
// 计算不考虑进位的和:将 a 和 b 进行位异或操作,得到加法的结果。
a = a ^ b;
// 将进位值赋值给 b,为下一次迭代做准备。
b = carry;
}
// 当进位为 0 时,a 的值就是最终的和。
return a;
}
};
该题总结:
a ^ b
或者说a异或b的作用:得到两数相加不进位的结果(a & b) << 1
的作用:可以计算 两数相加的进位