目录
牛客_JZ65 不用加减乘除做加法(异或做加法)
解析代码
题目很容易理解,数字的相加可以转换为二进制的加法,注意每一位相加与进位即可,两个数异或:相当于每一位相加,而不考虑进位。
class Solution {
public:
int Add(int num1, int num2) {
// return num1 + num2; // 不是
while(num2 != 0)
{
int sum = num1 ^ num2;
int carray = (num1 & num2) << 1;
num1 = sum;
num2 = carray;
}
return num1;
}
};