/* Compile with 'gcc -o printieee printieee.c' */ /* (c) 2003, Sven Rahmann */ /* If you use this, please give credit. */ #include #include void printieeedbl(double y) { int b,bit,bb; char* p = (char*)(&y); char bits[64]; for(bb=0,b=sizeof(y)-1; b>=0; b--) for(bit=7; bit>=0; bit--,bb++) bits[bb]=48+(((*(p+b)) >> bit)&1); for(bb=0; bb<64; bb++) { putchar((int)bits[bb]); if (bb==0 || bb==11) printf(" | "); } putchar('\n'); } void printieeesgl(float x) { int b,bit,bb; char* p = (char*)(&x); char bits[32]; for(bb=0,b=sizeof(x)-1; b>=0; b--) for(bit=7; bit>=0; bit--,bb++) bits[bb]=48+(((*(p+b)) >> bit)&1); for(bb=0; bb<32; bb++) { putchar((int)bits[bb]); if (bb==0 || bb==8) printf(" | "); } putchar('\n'); } int main(void) { double y; float x; printf("Size of double = %d bits; size of float = %d bits\n", 8*sizeof(double), 8*sizeof(float)); y = 0.01; printieeedbl(y); x = 0.01; printieeesgl(x); }