题解 | #不用加减乘除做加法#
不用加减乘除做加法
http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
通过异或运算可以得到两数的无进位加法结果,通过与后左移一位可以得到进位,结合这两个运算就可以得到加法结果。
class Solution {
public:
int Add(int num1, int num2) {
int result = num1 ^ num2;
int carry = (num1 & num2) << 1;
while(carry){
int temp1 = carry;
int temp2 = result;
result = result ^ carry;
carry = (temp1 & temp2) << 1;
}
return result;
}
};