题目描述
给定两个int A和B。编写一个函数返回A+B的值
不得使用+或其他算数运算符(- * /)。
测试样例:
输入:1,2
返回:3
题目分析
- 二进制位异或运算相当于不进位的加法
- 二进制位的按位与运算相当于每一位向前一位的进位
- 结合以上两种就可以实现加法运算
参考代码:
class UnusualAdd {
public:
int addAB(int A, int B) {
// write code here
int sum, carry;
while(B != 0)
{
sum = A ^ B;
carry = (A & B) << 1;
A = sum;
B = carry;
}
return sum;
}
};