Divide Two Integers

来源:互联网 发布:淘宝3c数码配件 编辑:程序博客网 时间:2024/05/22 18:29

Divide two integers without using multiplication, division and mod operator.

解答:

public int divide(int dividend, int divisor) {boolean negative = (dividend<0 && divisor>0) ||(dividend>0 && divisor<0);int result = 0;long div_dividend = Math.abs((long)dividend);//Math.abs(-2147483648)的结果为-2147483648,这是因为溢出的原因,因此这里一定先要做类型转换才行long div_divisor = Math.abs((long)divisor);while(div_dividend >= div_divisor) {int shift = 0;while( (div_divisor<<shift) <= div_dividend ) {++shift;}--shift;result += (1<<shift);div_dividend -= (div_divisor<<shift);}return negative? -result : result;    }

这道题一定要注意整数溢出的问题


0 0
原创粉丝点击