Divide two integers without using multiplication, division and mod operator.
The idea is to use bit operations. The key point is carefully handling corner cases.
public int divide(int dividend, int divisor) { if(dividend == 0){ return 0; } long div = dividend; div = dividend>0?div:-div; long vis = divisor; vis = divisor>0?vis:-vis; int result = 0; while(div>=vis){ long r = 1; long v = vis; while(div>=v){ v<<=1; r<<=1; } v>>>=1; r>>>=1; div -= v; result+=r; } return (dividend>0&&divisor>0) || (dividend<0&&divisor<0) ? result:-result; }
本文出自 “在云端” 博客,请务必保留此出处http://kcy1860.blog.51cto.com/2488842/1374820
Divide Two Integers,布布扣,bubuko.com
原文:http://kcy1860.blog.51cto.com/2488842/1374820