Leetcode.371.Sum of Two Integers
2019-12-31 本文已影响0人
Jimmy木
题目
不用加法计算加法。
Input:1,-1
Output: 0
Input:-1,10
Output: 9
思路
不使用加法就只能使用位运算。需要考虑负数的加法,减法和加法应该一样,采用取反加1的方式将减法改为加法。
int getSum(int a, int b) {
unsigned int carry = 1;
while (carry) {
carry = a & b;
a = a ^ b;
b = carry << 1;
}
return a;
}
总结
位运算需要花时间去细细品味。
更多计算参考https://www.cnblogs.com/kiven-code/archive/2012/09/15/2686922.html。