题目来源
题目描述
请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个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
解答
import java.util.*;
public class UnusualAdd {
public int addAB(int A, int B) {
if(B==0){
return A;
}
int sum=A^B;
int jin=(A&B)<<1;
return addAB(sum,jin);
}
}