一、题目描述
请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个int A和B。请返回A+B的值
二、思路分析
位的异或运算跟求‘和’的结果一样:
异或 :1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 0 = 0;
求和 :1 + 1 = 0,1 + 0 = 1,0 + 0 = 0;
位的与运算跟求’进位‘的结果一样:
位与 :1 & 1 = 1,1 & 0 = 0,0 & 0 = 0;
进位 :1 + 1 = 1,1 + 0 = 0,0 + 0 = 0;
所以就用按位异或和与的方法来求两数的加法
三、代码
public int addAB(int A, int B) {
int a = 0;
int b = 0;
while (B != 0) {
a = A ^ B;
b = (A & B) << 1;
A = a;
B = b;
}
return A;
}