不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

分析

学了忘,忘了学

二进制可以通过 异或 和 与 运算进行加法运算

  • 异或运算将各位的1整合到一起
  • 通过与运算获取进位

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public int Add(int num1,int num2) {
int
target = num1 ^ num2,
carry = (num1 & num2) << 1;

while( carry != 0 ){
target = num1 ^ num2;
carry = (num1 & num2) << 1;

num1 = target;
num2 = carry;
}

return target;
}
}