按位运算左移<<1相当于*2,右移>>1相当于/2;
用if排除INT_MIN除以-1的问题
int divide(int dividend, int divisor) {
if(divisor==0||(dividend==INT_MIN&&divisor==-1))return INT_MAX;
long long m=abs((long long)dividend),n=abs((long long)divisor),res=0;
int sign=(dividend<0)^(divisor<0)?-1:1;
if(n==1)return sign==1?m:-m;
while(m>=n)
{
long long tem=n,count=1;
while(m>=(tem<<1))
{
tem<<=1;
count<<=1;
}
res+=count;
m-=tem;
}
return sign==1?res:-res;
}