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

题目示例

解法(位运算)
算法思路
- 异或
^运算本质是【无进位加法】 - 按位与
&操作能够得到【进位】的对应位置,但还需要左移 1 才是需要进位的位置。 - 然后一直循环,直到【进位】变成 0 为止
C++ 算法代码
class Solution {
public:
int getSum(int a, int b) {
// 解法:位运算 (^ 异或:无进位相加)
while (b) {
int x = a ^ b;
int y = (a & b) << 1;
a = x;
b = y; // 得到进位的对应位置,再左移 1 才是需要进位的位置
// 只进行一次 a & b 不一定保证新的 a 和 b 没有需要进位的位置,所以需要将这个步骤进行循环
// a & b 为 0 则说明没有进位的位置了
}
return a ^ b;
}
};
算法总结及流程解析









