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

题目示例

解法(位运算)
核心思路
这里我们不用 + 运算符,而是利用位运算模拟加法过程。
- 异或
^:本质是【无进位加法】。比如1 ^ 1 = 0,1 ^ 0 = 1。 - 按位与
&:能得到哪些位置产生了进位。但进位需要向高位移动,所以结果要左移 1 位。 - 循环处理:只要还有进位(即
b不为 0),就继续将'无进位和'赋值给a,'进位值'赋值给b,直到进位消失。
参考代码
class Solution {
public:
int getSum(int a, int b) {
// 解法:位运算 (^ 异或:无进位相加)
while (b) {
int x = a ^ b; // 计算无进位和
int y = (a & b) << 1; // 计算进位并左移
a = x;
b = y;
}
a;
}
};









