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;
}
};
算法总结及流程解析:









