本文首發于我的個人部落格: 尾尾部落
題目描述
寫一個函數,求兩個整數之和,要求在函數體内不得使用+、-、*、/四則運算符号。
解題思路
用位運算來實作。
- step1: 進行異或運算,計算兩個數各個位置上的相加,不考慮進位;
- step2: 進行位與運算,然後左移一位,計算進位值;
- step3: 把異或運算的結果賦給 num1,把進位值賦給 num2,依此循環,進位值為空的時候結束循環,num1就是兩數之和。
參考代碼
public class Solution {
public int Add(int num1, int num2) {
if(num2 == 0)
return num1;
int sum = 0, carry = 0;
while(num2 != 0){
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return num1;
}
}