Friday, February 11, 2005

do division without using / and %


#include <stdio.h>
#include <stdlib.h>


void division(int dividen, int divisor, int& quotient, int& remainder) {
int count=0;

if (divisor<=0 || dividen <=0)
return;

remainder=dividen;
while (divisor <= remainder) {
divisor<<=1;
count++;
}
for (int i=0;i<count+1;i++) {
remainder-=divisor;
if (remainder>=0) {
quotient<<=1;
quotient|=0x01;
} else {
remainder+=divisor;
quotient<<=1;
}
divisor>>=1;
}
}

int main (int argc, char** argv) {
if (argc!=3) {
printf ("Usage: %s dividen divisor\n",argv[0]);
return 0;
}
int a=atoi(argv[1]);
int b=atoi(argv[2]);
int c=0,d=0;
division(a,b,c,d);
printf ("dividen: %d divisor:%d quotient:%d remainder:%d\n",a,b,c,d);
return 0;
}

0 Comments:

Post a Comment

<< Home