题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
思路:
这里考察的位运算,分为两个部分进行运算,不进位的部分和进位的部分。
不进位的部分是两个数取异或运算,进位的部分是进行与运算再左移一位。
主要的思路参考题解链接
需要注意在python中因为存储没有最长位数的限制,所以需要特殊做一些处理
这题背下来。
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)