要点:
二进制的每位相加相当于各位做异或操作 例如: 6 + 7 ;
6 的二进制是 110 ; 7的二进制是 111
相加之和 : 不考虑进位得 001
进位值相当于按位与操作,之和左移一位
计算进位值:1101 相当于 110 & 111 再次左移 1位 不考虑 第一步得 1100 (12)
求出上述两步之和,即为结果
代码
public int add(int num1, int num2) {
while (num2 != 0){
// 计算进位
int carry = (num1 & num2) << 1;
System.out.println("进位值:"+carry);
// 进行相加操作
num1 = num1 ^ num2;
num2 = carry;
}
return num1;
}