利用位运算解题
public int divide(int dividend, int divisor) {
if(divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) {
return Integer.MIN_VALUE;
}
int sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;
int res=0;
long myDividend=Math.abs((long)dividend);
long myDivisor=Math.abs((long)divisor);
while(myDividend>=myDivisor) {
long newDivisor=myDivisor;
int quotient=1;
while(myDividend>=(newDivisor<<1)) {
newDivisor<<=1;
quotient<<=1;
}
res=res+quotient;
myDividend=myDividend-newDivisor;
}
return sign == 1 ? res : -res;
}