#include #include #include #include using namespace std; typedef unsigned char ubyte; typedef long long int llint; typedef unsigned long long int ullint; union container { ubyte bv[8]; short int sv[4]; int iv[2]; llint lv; double dv; }; void print_binary(ullint n) { int shift = 63; while (shift >= 0) { cout << ((n >> shift) & 1); shift -= 1; } cout << "\n"; } void print8chars(ubyte x[]) { for (int i = 0; i < 8; i += 1) { int c = x[i]; if (c > ' ' && c <= '~') cout << (char)c << " "; else if (c == ' ') cout << "sp "; else if (c == '\n') cout << "\\n "; else if (c == '\r') cout << "\\r "; else if (c == '\b') cout << "\\b "; else if (c == '\n') cout << "\\n "; else cout << "x" << hex << setfill('0') << setw(2) << c << " " << dec; } } int main() { container x; x.dv = 2 * acos(-1.0); cout << "decimal bytes:\n "; for (int i = 0; i < 8; i += 1) cout << (unsigned int)x.bv[i] << " "; cout << "\n"; cout << "hexadecimal bytes:\n " << hex; for (int i = 0; i < 8; i += 1) cout << (unsigned int)x.bv[i] << " "; cout << dec << "\n"; cout << "decimal short ints:\n "; for (int i = 0; i < 4; i += 1) cout << x.sv[i] << " "; cout << "\n"; cout << "decimal ints:\n "; cout << x.iv[0] << " " << x.iv[1] << "\n"; cout << "decimal long long int:\n "; cout << x.lv << "\n"; cout << "double:\n "; cout << x.dv << "\n"; cout << "characters:\n "; print8chars(x.bv); cout << "\n"; cout << "bits:\n "; print_binary(x.lv); cout << "\n"; } /* pi 0100000000001001001000011111101101010100010001000010110100011000 2*pi 0100000000011001001000011111101101010100010001000010110100011000 */