#include int main(void) { int number, bitmask, nibblemask; int row, col; FILE *fp; if( NULL == (fp = fopen("hextable.txt", "wt")) ) return(-1); // --- HEX REFERENCE TABLE ---------------------------- // Print Header fprintf(fp, "\n"); fprintf(fp, "Hexadecimal Reference Table\n"); fprintf(fp, "\n"); fprintf(fp, " HEX | DEC | BIN | 2's | 1's | x16 | /16 |\n"); fprintf(fp, "=====|=====|======|=====|=====|=====|========|\n"); nibblemask = 0x000F; for(row = 0; row < 16; row++) { fprintf(fp, " %1X |", row); fprintf(fp, " %2i |", row); fprintf(fp, " "); bitmask = 0x0010; while( (bitmask /= 2) > 0) { if( row & bitmask ) fprintf(fp, "1"); else fprintf(fp, "0"); } fprintf(fp, " |"); fprintf(fp, " %1X |", nibblemask&(-row)); fprintf(fp, " %1X |", nibblemask&(~row)); fprintf(fp, " %3i |", row*16); fprintf(fp, " %6.4f |", (double)row / (double)16); fprintf(fp, "\n"); } fprintf(fp, "\n"); // --- HEX ADDITION TABLE ----------------------------- // Print Header fprintf(fp, "\n"); fprintf(fp, "Hexadecimal Addition Table\n"); fprintf(fp, "\n"); fprintf(fp, " +|"); for(col = 0; col < 16; col++) { fprintf(fp, "%2X|", col); } fprintf(fp, "\n"); fprintf(fp, "==="); for(col = 0; col < 16; col++) { fprintf(fp, "==="); } fprintf(fp, "\n"); // Print Table for(row = 0; row < 16; row++) { fprintf(fp, "%2X|", row); for(col = 0; col < 16; col++) { number = row + col; fprintf(fp, "%2X|", number); } fprintf(fp, "\n"); } // --- HEX MULTIPLICATION TABLE ----------------------- // Print Table Header fprintf(fp, "\n"); fprintf(fp, "Hexadecimal Multiplication Table\n"); fprintf(fp, "\n"); fprintf(fp, " *|"); for(col = 0; col < 16; col++) { fprintf(fp, "%2X|", col); } fprintf(fp, "\n"); fprintf(fp, "==="); for(col = 0; col < 16; col++) { fprintf(fp, "==="); } fprintf(fp, "\n"); // Print Table for(row = 0; row < 16; row++) { fprintf(fp, "%2X|", row); for(col = 0; col < 16; col++) { number = row * col; fprintf(fp, "%2X|", number); } fprintf(fp, "\n"); } return(0); }