1、采用直接想减的方式进行处理
//直接相减,在leetCde中无法提交,提示超时
public static int divide(int dividend, int divisor){
int quotient = 0;
boolean postiveNumber = true;
if((dividend>0 && divisor<0) || (dividend<0 && divisor>0)){
postiveNumber = false;
}
long absDividend = Math.abs((long)dividend);
long absDivisor = Math.abs((long)divisor);
while(absDividend >= absDivisor){
absDividend -= absDivisor;
quotient++;
if(quotient >= Integer.MAX_VALUE){
return Integer.MAX_VALUE;
}
}
if(!postiveNumber){
return -quotient;
}
return quotient;
}
2、使用移位运算实现计算
public static int divide1(int dividend, int divisor){
//存放商数
long quotient = 0;
//返回结果值
int result = 0;
//判断返回结果是+/-
boolean postiveNumber = true;
//两种情况返回结果为-
if((dividend>0 && divisor<0) || (dividend<0 && divisor>0)){
postiveNumber = false;
}
//将除数和被除数进行取绝对值,转为long型防止-2^31绝对值后变为0.
long absDividend = Math.abs((long)dividend);
long absDivisor = Math.abs((long)divisor);
//如果被除数小于除数,返回结果为0.
if(absDividend= absDivisor) {
long tmp = absDivisor,tempQuotient=1 ;
while(absDividend >= tmp<<1){
tmp<<=1;
tempQuotient<<=1;
}
absDividend -= tmp;
quotient += tempQuotient;
}
return result = postiveNumber? quotient>Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)quotient : (int)-quotient;
}



