題目描述
寫一個函數,求兩個整數之和,要求在函數體内不得使用 +、-、×、÷ 四則運算符号。
樣例
輸入:num1 = 1 , num2 = 2
輸出:3
全加器,先求解不進位的和,之後求解進位。比如5+6 不進位和為011,啥時候進位:兩個數都是1的時候進位,且進位要向左移動一位,進位和為100,向左移動一位得到1000,将進位和與不進位和相加即可得到最終的和,此時進位和與非進位和是不是又可以轉化為上述過程,直到沒有進位停止循環。
class Solution {
public:
int add(int num1, int num2){
while(num2!=0)
{
int s=num1^num2;
int carry=(num1&num2)<<1;
num1=s;
num2=carry;
}
return num1;
}
};