搜索此博客

2013年1月31日星期四

Divide Two Integers

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

Hint: simulate the process just as you are doing decimal division by hand.

01 public int divide(int dividend, int divisor) {
02    long dividend_long=dividend;
03    long divisor_long=divisor;
04    boolean isNegative=false;
05  
06    if(dividend_long<0)
07    {
08        isNegative=true;
09        dividend_long=-dividend_long;
10    }
11  
12    if(divisor_long<0)
13    {
14        isNegative=!isNegative;
15        divisor_long=-divisor_long;
16    }
17  
18    int quotient=0;      
19    while(dividend_long>=divisor_long)
20    {
21        long sum=divisor_long;
22        int digit=1;
23        while((sum+sum)<=dividend_long)
24        {
25            sum+=sum;
26            digit<<=1;
27        }
28        quotient+=digit;
29        dividend_long-=sum;
30    }
31  
32    if(isNegative)
33        quotient=-quotient;
34  
35    return quotient;
36 }

没有评论:

发表评论