题:给定两个整数,将两数相除,不能用乘法、除法和mod运算符
法:规定不能用乘法、除法和取余操作的话,就只能用加减法和位运算,其中右移就相当于乘2倍操作
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
flag=1
if (dividend<0 and divisor>0) or (dividend>0 and divisor<0):flag=-1
m,n=abs(dividend),abs(divisor)
res=0
while m>=n:
p,t=1,n
while m>= t<<1:
p<<=1
t<<=1
res+=p
m-=t
res*=flag
if res<-2**31 or res>2**31-1:return 2**31-1
return res