不用加减乘除做加法_JAVA_简单
不用加减乘除做加法
http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215
- 加法可以分为不包含进位的加法(异或)和进位(与操作再左移)
- 每次计算不包含进位的加法和进位,如果无进位,则不包含进位的加法计算出来的就是结果,如果有进位,则将不包含进位的加法算出来的而结果和进位算作两个数再相加
public class Solution {
public int Add(int num1,int num2) {
int sum = 0, carry = -1;
// 如果进位为0则sum计算值是正确的
while(carry != 0) {
// 没有进位的加法
sum = num1 ^ num2;
// 单纯的进位
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return sum;
}
}

