leetcode 18: Divide Two Integers

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


public class Solution {
    public int divide(int divid, int divis) {
        // Start typing your Java solution below
        // DO NOT write main() function
        long dividend = divid;
        long divisor = divis;
        
        boolean sign = false;
        
        if(dividend<0) {
            sign = true;
            dividend = -dividend;
        }
        
        if(divisor<0) {
            sign = !sign;
            divisor = -divisor;
        }
        
        int res = 0;
        long temp = 0;
        while( dividend >= divisor) {
            int i=1;
            temp = divisor;
            
            while( (temp<<1) <= dividend){
                temp <<= 1;
                i <<= 1;
            }
            res |= i;
            dividend -= temp;
        }
        return sign ? -res : res;
    }
}


posted @ 2013-01-07 22:41  西施豆腐渣  阅读(145)  评论(0编辑  收藏  举报