Java 加法的位运算实现原理
加法:a+b
以2+2为例 二进制为10 10
1、由a^b可得按位相加后没有进位的和及原位和;10^10=0
2、由a&b可得可以产生进位的地方;由(a&b)<<1得到进位后的值即进位和。(10&10)<<1=100
3、如何进位不为0,则使a=原位和,b=进位和,重复上述步骤。a和b分别为(0,100)
原位和:0^100=100 进位和: (0&100)<<1=0
如何进位为0,则相加的结果为原位和;如:(0&100)<<1=0 结果为:100 4
java代码实现:
public static int add(int a,int b) {
int res=0;
int xor=a^b;//得到原位和
int forworad=(a&b)<<1;//得到进位和
return forworad==0?xor:add(xor,forworad);
/*
if(forworad!=0) {
res=add(xor,forworad);//若进位和不为0,则递归求原位和+进位和
}else {
res=xor;
}
return res;
*/
}