剑指offer65 不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2
输出:3
思路:
1.num1 与 num2取异或为sum,即相同的为0,然后相异的为1。这样两数相加,同位上都是1的,得到不用进位的数值。
2.num1和num2取与为bit,即都为1的位才保留,即得到要进位的位的位置,然后左移一位,即得到要加的位置。
3.然后取num1 为sum,num2为bit重复上述的操作。直到num2 == 0
AcWing-85 C++ code:
class Solution {
public:
int add(int num1, int num2){
int sum, bit;
do{
sum = num1 ^ num2;
bit = (num1 & num2) << 1;
num1 = sum;
num2 = bit;
}while(num2 != 0);
return sum;
}
};