一般都是位运算,记住怎么用位运算求+吧。 可以参考:【每日算法Day 66】经典面试题:不用四则运算如何做加法? – 知乎
1)两个数做^运算,得到各位相加不进位的计算结果
2)两个数做&运算,得到进位。因为进位是要加到左一位的,所以需要左移1
3)循环操作,直到进位为0
int Add(int num1, int num2) {
// 最后的循环迭代的结果 会是carry为全0 sum为加和的结果
// carray表示进位 用&和左移实现
// sum表示每轮不带进位的结果 用^实现
while(num2!=0){
int sum = num1 ^ num2;//不进位的加法
int carry = (num1 & num2)<<1;//进位
num1 = sum;
num2 = carry;
}
return num1;
}