Divide two integers without using multiplication, division and mod operator.
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 }
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 }
没有评论:
发表评论