class Solution:
def divide(self, dividend: int, divisor: int) -> int:
# 求最后结果的符号
sign = (dividend > 0) ^ (divisor > 0)
dividend = abs(dividend)
divisor = abs(divisor)
# 被除数减去除数
quotient = 0
# 除数加倍直到超过剩余的被除数
count = 0
while dividend - (divisor << count) >= 0:
quotient += (1 << count)
dividend -= (divisor << count)
count += 1
# 除数减半直到count = 0
while count > 0:
count -= 1
if dividend - (divisor << count) >= 0:
quotient += (1 << count)
dividend -= (divisor << count)
# 负数处理
if sign:
quotient = - quotient
# 最大数处理
if quotient > 2147483647:
quotient = 2147483647
# 最小数处理
if quotient < -2147483648:
quotient = -2147483648
return quotient