位运算在算法竞赛与面试中是高频考点,掌握其底层逻辑能显著提升解题效率。本文通过三道典型例题演示其核心应用,所有示例均基于 C++ 实现,强调时间复杂度优化与代码可读性。
35. 两个整数之和
题目描述
不使用运算符 + 和 -,计算两整数 a、b 之和。
题目示例

解法思路
利用位运算模拟加法过程:
- 异或
^:本质是无进位加法。 - 按位与
&:得到进位位置,需左移一位才是实际进位值。 - 循环处理:将无进位结果与进位值继续相加,直到进位为 0。
C++ 代码实现
class Solution {
public:
int getSum(int a, int b) {
while (b != 0) {
int sum = a ^ b; // 无进位和
int carry = (unsigned int)(a & b) << 1; // 进位
a = sum;
b = carry;
}
return a;
}
};
流程解析

注意这里使用了 unsigned int 强制转换来处理负数的符号位问题,确保左移行为符合预期。循环终止条件明确,当没有进位产生时, 即为最终结果。






