題目描述
寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。
解法:
1.兩個數進行按位異或,那麼結果就是不含進位的加法值
2.將兩個數進行按位相與,再向左移動一位,那麼結果就是兩個數相加產生和的進位值
3.將不含進位的加法值與進位值,不斷進行循環,直到進位爲0,那麼結果就是兩個數的和值
class Solution {
public:
int Add(int num1, int num2)
{
int sum;
int carry;
do{
sum = num1 ^ num2; //異或,不帶進位的和
carry = (num1 & num2) << 1; //進位計算
num1 = sum;
num2 = carry; //進位
}while(carry != 0); //若進位爲0,則結束計算
return num1;
}
};