首页 > 其他 > 详细

Divide Two Integers

时间:2014-03-14 19:20:28      阅读:473      评论:0      收藏:0      [点我收藏+]

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

Divide Two Integers

原文:http://kcy1860.blog.51cto.com/2488842/1374820

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!