题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/
四则运算符号。
解题思路
- 将加法分解成两步
- 两个数不计算进位相加得到
sum
,计算进位carry
- 再将进位加上:
sum = sum + carry
- 直到没有进位为止
public int Add(int num1, int num2) {
int sum, carry;
do {
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
} while (num2 != 0);
return sum;
}