题目描述
请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个int A和B。请返回A+B的值
测试样例:
1,2
返回:3
思路:
二进制加法。发现一个特点。
位的异或运算跟求'和'的结果一致:
异或 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
于是可以用异或运算和与运算来表示加法
import java.util.*;
public class UnusualAdd {
public int addAB(int A, int B) {
// write code here
int xor,and;
while(B!=0){
xor = A^B;
and = (A&B)<<1;
A=xor;
B=and;
}
return A;
}
}