
35. 两个整数之和
题目描述

题目示例

解题思路
这道题的核心在于不能用 + 运算符。我们可以利用位运算来模拟加法过程。
- 异或 (^):本质是【无进位加法】。比如 1^1=0, 0^0=0, 1^0=1,这正好对应了二进制加法的本位结果。
- 按位与 (&) + 左移 (<<):
a & b能得到哪些位置产生了进位,但进位需要向高位移动一位,所以必须<< 1。
只要进位不为 0,就需要重复上述步骤,直到没有进位为止。
C++ 代码实现
class Solution {
public:
int getSum(int a, int b) {
// 当进位为 0 时,循环结束,此时 a 即为结果
while (b != 0) {
int x = a ^ b; // 无进位和
int y = (a & b) << 1; // 进位值
a = x;
b = y;
}
return a;
}
};









