不用加减乘除做加法_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; } }