題目描述:
寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、×、÷四則運算符號。
分析:
加法本質是先各位相加不考慮進位,再把進位和前一步結果各位相加,如此反覆直到不產生進位。
完整代碼:
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;
}
};