題目
【寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號】
1、分析
由於不能使用加減乘除,所以只能使用位運算來進行解決。將數字都轉換成二進制來進行位運算。
- 首先將兩個數字各位進行 異或 運算,此時未考慮兩個都是 1 的數字進位。
- 再將兩個數字各位進行 與 運算,來獲取進位的情況
- 最後再將進位的數字加到前一位即可
2、代碼
class Solution {
public:
int Add(int num1, int num2)
{
int sum, carry;
do
{
sum=num1^num2;
carry=(num1 & num2)<<1;
num1=sum;
num2=carry;
}
while(num2!=0);
return num1;
}
};