剑指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);
}

原文地址:https://www.cnblogs.com/FCY-LearningNotes/p/13965913.html