题解 | #不用加减乘除做加法#
不用加减乘除做加法
http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
解题思路
^ 异或运算符可以看成是不进位的加法
, 因此我们可以有以下思路,不断将num1与num2进行不进位加法,但将进位的值赋值num2,此后继续进行不进位加法,直到进位值为0。
int Add(int num1, int num2)
{
while(num2)
{
int t = (num1 & num2) << 1;
num1 ^= num2;
num2 = t;
}
return num1;
}