题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。
分析:
加法本质是先各位相加不考虑进位,再把进位和前一步结果各位相加,如此反复直到不产生进位。
完整代码:
class Solution {
public:
int Add(int num1, int num2)
{
do
{
//声明一个变量,表示进位和
//用异或来代替两个数相加(不进位)
int Sum = num1 ^ num2;
//声明一个变量,表示进位数
//用两个数先与再向左移的方式,计算进位数
int Carry = (num1 & num2)<< 1;
//将Sum 赋值给 num1
//将 Carry 赋值给 num2
//将进位和和进位数相加
num1 = Sum;
num2 = Carry;
}while(num2 != 0); //直到进位数为0
//返回最终的结果
return num1;
}
};