问题
思路
用位运算。
抑或操作可以实现无进位的加法。然后&操作左移,计算进位。
代码
class Solution {
public:
int Add(int num1, int num2)
{
int carry = (num1 & num2) << 1;// 计算进位
int tmp = num1 ^ num2;// 无进位加法
while(carry){
num1 = carry;
num2 = tmp;
carry = (num1 & num2) << 1;
tmp = num1 ^ num2;
}
return tmp;
}
};
class Solution {
public:
int Add(int num1, int num2)
{
int carry = 0;
int tmp = 0;
do{
carry = ( num1 & num2 ) << 1;
tmp = num1 ^ num2;
}while(num1 = carry, num2 = tmp, carry);
return tmp;
}
};