/* Convert decimal to binary. uses bit functions and MASKs */ #include #define MASK1 0x0001 char binchars[32]; unsigned xin; int nbits, i, xbit; int binary(); int readyn(); main() { unsigned xin; do{ printf("enter number [decimal int]: "); scanf("%d",&xin); binary(xin); printf("convert another "); } while(readyn()); } int binary(xin) unsigned xin; { int nbits, i, xbit; char binchars[32]; nbits = 8*sizeof(xin); xbit = xin; for (i=0;i> 1 ); } printf("xin = %d decimal, %u unsigned, %x hex, ",xin,xin,xin); for(i=nbits-1;i>=0;i--){ printf("%c",binchars[i]); } printf(" binary\n\n"); } int readyn() /* returns 1 for TRUE, 0 for FALSE, -1 on error */ { char yn[2]; do{ printf(" [Y/N] ? "); scanf("%1s",yn); } while ( !( (yn[0] == 'Y') || (yn[0] == 'y') || (yn[0] == 'N') || (yn[0] == 'n') ) ); switch (yn[0]){ case 'Y' : case 'y' : return(1); case 'N' : case 'n' : return(0); default: return(-1); } }