题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路分析
直接想到位运算。&相当于计算进位(1&1=1),^相当于计算加法(不同为1,同为0)。当进位为1,继续循环(这里要把进位左移,理解为1*当前进制);当进位为0时,就是最终结果。
eg. 以十进制为例。5+7=>计算个位为2,进位值为1*10。5+4=>计算个位为9,进位为0。
代码实现
public static int Add(int num1, int num2) {
int res = 0, carry = 0;
do {
res = num1 ^ num2;
carry = (num1 & num2)<<1;
num1 = res;
num2 = carry;
}while (carry != 0);
return res;
}