题目
思路
- ^ 亦或 ----相当于无进位的求和
- 1 ^ 1 = 0
- 1 ^ 0 = 1
- 0 ^ 0 = 0
- & 与 ----相当于求每位的进位数carry
- 1 & 1 = 1
- 1 & 0 = 0
- 0 & 0 = 0
- result = 不进位加法的和(亦或) + 进位
代码
class Solution {
public int add(int a, int b) {
// a看作sum,b看作carry
while (b != 0) {//进位每次都往左挪一位,直到变成0
int carry = (a & b) << 1;//求各个位上的进位构成的数字,因为是进位,所以往左挪一位
a = a ^ b; //无进位加法
b = carry;//进位部分循环下次继续加给a
}
return a;
}
}