剑指offer1.整数除法
方式使用位运算
def divide( a: int, b: int) -> int:
ret = 0
flag = False if (a > 0 and b > 0) or (a < 0 and b < 0) else True
a, b = abs(a), abs(b)
def calc(x, y):
n = 1
#向左移一位代表乘2,向右移动一位代表除2
#位移运算符的优先级高于大小关系运算符
while x > y << 1:
y <<= 1
n <<= 1
return n, y
while a >= b:
cnt, val = calc(a, b)
ret += cnt
a -= val
ret = -ret if flag else ret
return ret - 1 if ret >= 2 ** 31 else ret
print(divide(10,2))
位运算知识点补充
位运算的优先级: