#include <iostream>
#include <iomanip>
using namespace std;

// ver 0.10 (Nov 30, 2012)

int main(){

    unsigned short int mask;
    unsigned short int i;
    unsigned short int j;

    char COD[][4]={
     "NUL","SOH","STX","ETX","EQT","ENQ","ACK","BEL","BS ","HT ","LF ","VF ","FF ","CR ","SO ","SI ",
     "DLE","XON","DC2","XOF","DC4","NAK","SYN","ETB","CAN","EM ","SUB","ESC","FS ","GS ","RS ","US ",
     "SP "};
     
    cout<<"---------------------------------------\n";
    cout<<"|  DEC  | ASCII |  HEX   |   BINARY   |\n";
    cout<<"---------------------------------------";
	for (i=0; i<128; i++){
        if (i>=0 && i<=32)
           cout<<"\n|  "<<setw(3)<<setfill('0')<<i<<"  |  "<<COD[i]<< "  |";
        else if (i == 127)
             cout<<"\n|  127  |  DEL  |";
        else
             cout<<"\n|  "<<setw(3)<<setfill('0')<<i<<"  |   "<<char(i)<<"   |";

        // stampa della rappresentazione binaria mediante maschera            
        cout<<"  0x"<<hex<<setw(2)<<setfill('0')<<i<<"  |  "<<dec;
		for (j=0; j<8; j++){
     		( i & (1<<(7-j)) ) == 0 ? cout<<0:cout<<1;
            if ( j==3 )
                cout<<" ";                  
		}
		cout<<" |";
	}
	cout<<"\n---------------------------------------\n";
	return 0;
}
