不用加减乘除做加法
Last updated
Last updated
class Solution {
public int add(int a, int b) {
while(b != 0) { // 当进位为 0 时跳出
int c = (a & b) << 1; // c = 进位
a ^= b; // a = 非进位和
b = c; // b = 进位
}
return a;
}
}class Solution:
def add(self, a: int, b: int) -> int:
x = 0xffffffff
a, b = a & x, b & x # 转为补码形式
while b != 0:
a, b = (a ^ b), (a & b) << 1 & x
return a if a <= 0x7fffffff else ~(a ^ x) # 还原class Solution {
public:
int add(int a, int b) {
while (b) {
int carry = a & b; // 计算 进位
a = a ^ b; // 计算 本位
b = (unsigned)carry << 1; // C++中负数不支持左位移
}
return a;
}
};