参考:https://leetcode-cn.com/problems/divide-two-integers/solution/bei-zeng-fa-by-huhudaya/
int divide(int dividend, int divisor){
int count=0,flag=1;
if(dividend==0)return 0;
if(divisor == -1){
if(dividend>INT_MIN) return -dividend;// 只要不是最小的那个整数,都是直接返回相反数就好啦
return INT_MAX;// 是最小的那个,那就返回最大的整数啦
}
if(divisor==1)
{
if(dividend>INT_MAX) return INT_MAX;// 只要不是最小的那个整数,都是直接返回相反数就好啦
return dividend;
}
if((dividend>0&&divisor<0)||(dividend<0&&divisor>0))flag=0;
long a = dividend;
long b = divisor;
a = a>0?a:-a;
b = b>0?b:-b;
count=div1(a,b);
if(flag)
return count>INT_MAX?INT_MAX:count;
else
return -count;
}
int div1(long a,long b){
int count=0;
while(a>=b){
int i=1;
long tmp=b;//tmp起始一直是b,之后尝试增大
while(a>=tmp){
count=count+i;//尝试找出最大的除数
a=a-tmp;
tmp<<=1;
i<<=1;
}
//count++;
//a-=b;
}
return count;
}