剑指 Offer 65. 不用加减乘除做加法
2022年10月17日
一、问题描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
二、问题分析
-
算法思路:使用位运算进行实现。
-
需要注意Python中负数的存储:
三、解题代码
class Solution(object):
def add(self, a, b):
"""
:type a: int
:type b: int
:rtype: 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)
总结
使用位运算进行加法的实现。