最后更新于4年前
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
对于两个数字a和b, 有:
a
b
a^b: 每位的异或运算, 得到的结果为无进位相加的结果
a^b
a&b: 每位的与运算, 得到的结果为进位结果
a&b
因此将这a^b与a&b左移一位相加, 得到的仍然是a+b. 左移一位的目的是实现进位.
a+b
按照这个思路, 循环求和, 当进位为0时, 对应的就是最终的加和结果.
Python中对于负数位的处理参考: .
输入: a = 1, b = 1 输出: 2
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)