位运算经典算法题解析
位运算是算法面试中的高频考点,尤其在处理整数运算和状态压缩时往往能带来 O(1) 的空间优化。下面我们通过三道经典题目,拆解位运算的核心技巧。
35. 两个整数之和
题目链接
题目描述
不使用运算符 + 和 -,计算两个整数 a 和 b 的和。

题目示例

核心思路
这道题的本质是模拟加法器的底层逻辑:
- 无进位加法:异或运算
^本质上就是按位相加但不考虑进位。例如1 ^ 1 = 0(有进位但本位为 0),1 ^ 0 = 1。 - 进位计算:按位与
&操作能得到哪些位置产生了进位,但进位需要向左移动一位才能加到高位上,即(a & b) << 1。 - 循环迭代:将无进位结果作为新的
a,进位结果作为新的b,重复上述过程,直到进位b变为 0,此时a即为最终结果。
代码实现
class Solution {
public:
int getSum(int a, int b) {
// 当进位不为 0 时继续循环
while (b != 0) {
// 无进位和
int sumWithoutCarry = a ^ b;
// 进位值,需左移一位
int carry = ( )(a & b) << ;
a = sumWithoutCarry;
b = carry;
}
a;
}
};









