您的位置:首页 > 其它

计算两个整数相除,不能用除法和取余

2017-11-13 09:43 239 查看
class Solution {
public int divide(int dividend, int divisor) {
int result=0;
if(divisor == 0) //除数为0,返回最大值
return Integer.MAX_VALUE;
if(dividend == Integer.MIN_VALUE && divisor == -1){
return Integer.MAX_VALUE;
}
long dividend1 = Math.abs((long)dividend);
long divisor1 = Math.abs((long)divisor);
while(dividend1 >= divisor1)//当被除数大于除数时,进行位移操作
{
int shiftnum = 0;
while(dividend1 >= divisor1<<shiftnum){
shiftnum++;//记录左移次数(比实际次数多1)
}
result += 1<<(shiftnum-1);
dividend1 -= divisor1<<(shiftnum-1);//更新被除数的值
}
if((dividend>0 && divisor>0)||(dividend<0 && divisor<0))//计算正负数
return result;
else
return -result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: