题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。
样例
输入: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;
}
};