class Solution {
/*不使用运算符 + 和 - ,计算两整数 a 、b 之和原理
* 位运算实现加法运算,与十进制相同,位运算是二进制运算
* 存在进位问题,即1 1相对进位用&,如无需进位则无1 1相对
* 当无1 1相对时直接进行|运算,1 0为1*/
public static int getSum(int a, int b) {
System.out.println(a+","+b);
if((a&b)==0)
return a|b;
return getSum(a^b,(a&b)<<1);//递归a&b左移
}
}
public class Test {
public static void main(String[] args){
int i= Solution.getSum(10,2);
System.out.println(i);
}
}
二进制进位,2为进位,前面数为无进位相加,后面数为进位