面試題65.不用加減乘除做加法
題目描述
寫一個函數,求兩個整數之和,要求在函數體內不得使用 “+”、“-”、“*”、“/” 四則運算符號。
示例:
輸入: a = 1, b = 1
輸出: 2
提示:
a, b 均可能是負數或 0
結果不會溢出 32 位整數
題解
邏輯異或相當於無進位的求和;
邏輯與相當於求每位的進位數;
重複求和過程直到進位爲0;代碼如下:
class Solution {
public int add(int a, int b) {
while(b!=0){
int temp = a^b;
b=(a&b)<<1;
a=temp;
}
return a;
}
}