举例说明:a = 4, b = 6, 计算a+b。
a = 4 0100
b = 6 0110
进位和(&):0100 = 4
非进位和(异或):0010 = 2
则 a + b =2 + 4<<1
----------------------------------------------
2 0010
4<<1 1000
进位和(&):0000 = 0
非进位和(异或):1010 = 10
当进位和为 0 时,就可以得到 a + b 的和 10。
public class Cal_add {
public int ADD(int num01, int num02){
//进位
int isCarray = num01 & num02;
//非进位
int noCarray = num01 ^ num02;
if(isCarray != 0){
return ADD(noCarray,isCarray<<1);
}
return noCarray;
}
}