#
# 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
#
# 示例:
# 输入: a = 1, b = 1
# 输出: 2
#
# 提示:
# a, b 均可能是负数或 0
# 结果不会溢出 32 位整数
# class Solution(object):
# def getSum(self, a, b):
# # 2^32
# MASK = 0x100000000
# # 整型最大值
# MAX_INT = 0x7FFFFFFF
# MIN_INT = MAX_INT + 1
# while b != 0:
# # 计算进位
# carry = (a & b) << 1
# # 取余范围限制在 [0, 2^32-1] 范围内
# a = (a ^ b) % MASK
# b = carry % MASK
# return a if a <= MAX_INT else ~((a % MIN_INT) ^ MAX_INT)
# class Solution:
# def getSum(self, a: int, b: int) -> int:
# a &= 0xFFFFFFFF#转32位数
# b &= 0xFFFFFFFF
# while b:
# carry = a & b#进位符
# a ^= b#无进位求和
# b = ((carry) << 1) & 0xFFFFFFFF
# # print('b=', bin(b))
# return a if a < 0x80000000 else ~(a^0xFFFFFFFF)#考虑正负并限制范围在32位
#
# a=-1099999999999999999999999999
# b=2099999999999999999999999999
# s=Solution()
# o=s.getSum(a,b)
# print(o)
# 2**32=4294967296
class Solution:
def getSum(self, a, b):
tmp=sum([a,b])
if tmp>=0:
tmp%=4294967296
else:
tmp%=-4294967296
return tmp
a=-13
b=-23
# a=1
# b=2
s=Solution()
o=s.getSum(a,b)
print(o)
Python练习题——位运算两数相加
最新推荐文章于 2022-11-29 15:59:13 发布