剑指offer——不用加减法计算两个数的和
首先我们要考虑我们是如何计算10进制整数的加法。
对于10进制数相加:
90 + 10
- 90 + 10 不考虑进位 结果为00,进位为100因为是10进制位上进位所以<<1,即为100;
然后考虑00+100=100,进位为0,所以结果就为0;
思路:
两数相加: 相加不考虑进位的结果 + 进位的结果
public int Add(int num1,int num2) {
return num2 == 0 ? num1 :Add(num1 ^ num2 , (num1 & num2) << 1);
}