public int divide(int dividend, int divisor) {
boolean sign= (dividend>0)^(divisor>0);
int result=0;
if(dividend>0){
dividend= -dividend;
}
if(divisor>0){
divisor= -divisor;
}
while(dividend<= divisor){//都是负数
int temp_result= -1;
int temp_divsior= divisor;
while(dividend <= (temp_divsior)<<1){
if(temp_divsior<=(Integer.MIN_VALUE>>1)){
break;
}
temp_result= temp_result<<1;
temp_divsior= temp_divsior<<1;
}
dividend= dividend-temp_divsior;
result += temp_result;
}
if(!sign){
if(result <= Integer.MIN_VALUE){
return Integer.MAX_VALUE;
}
result= -result;
}
return result;
}