不使用加减乘除实现A+B(Python)
网上很多都是错误的实现
比如
def add2(a,b):
while b != 0:
ans = a ^ b
b = (a&b) << 1
a = ans
return a
正确实现
第一种实现,使用ctypes
def add(a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
import ctypes
a = ctypes.c_int32(a).value
b = ctypes.c_int32(b).value
while b != 0:
carry = ctypes.c_int32(a & b).value
a = ctypes.c_int32(a ^ b).value
b = ctypes.c_int32(carry << 1).value
return a
第二种实现,模拟整型溢出
MAX_BIT = 2**32
MAX_BIT_COMPLIMENT = -2**32
def add(a, b):
while b != 0:
if b == MAX_BIT:
return a ^ MAX_BIT_COMPLIMENT
carry = a & b
a = a ^ b
b = carry << 1
return a