题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: 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)

这篇博客探讨了一种使用位运算而非传统四则运算符来计算两个整数之和的方法。通过异或运算处理不进位加法,与运算和左移处理进位,巧妙地实现了加法功能。在Python中,由于整数没有长度限制,需要额外处理可能的溢出问题。提供的解决方案展示了如何在位操作下确保结果不超过32位整数范围。
287

被折叠的 条评论
为什么被折叠?



