;**************************************************************************** ; LISTING 1 - DECIMAL-TO-BINARY CONVERSION IN C ; ; "C Routine speeds decimal-to-binary conversion," EDN, Nov 24, 1999, pg 170 ; http://www.ednmag.com/ednmag/reg/1999/112499/designideas.htm#24di3 ;**************************************************************************** /* Fast decimal-to-binary conversions Author: Giovanni Motta (gim@ieee.org) */ #include int c[32]; /* Decimal to binary */ void fast_d2b(unsigned long x, int * c) { int i; for(i=0;i<32;i++) *(c++) = (x >> i) & 0x1; } /* Binary to decimal */ void fast_b2d(unsigned long int * n, int * c) { int i = 32; *n = 0; while(i--) { *n <<= 1; *n += *(c+i); } } main() { int k; unsigned long int x, y; printf("\nEnter an integer number"); printf(" smaller than 4,294,967,296 : "); scanf("%lu", &x); printf("\nCalling fast_d2b for "); printf("decimal to binary conversion :\n"); fast_d2b(x, c); printf(" Bin # ="); for (k=31; k>=0; k--) printf(" %d",c[k]); printf("\n\nCalling fast_b2d for "); printf("binary to decimal conversion :\n"); fast_b2d(&y, c); printf(" Dec # = %lu\n", y); return 0; }