#include using namespace std; /* * This program prints integer (base-10) command-line arguments * in octal, hexadecimal and binary. * * @creator g.d.thurman * @created 2008.03.09 * @caveats no checking performed on the command-line arguments */ int main(int argc, char* argv[]) { const int BITS_PER_BYTE = 8; unsigned int mask; int i, flag; int argv_i; int nbr; int bitset; int ones = 0; const int NBITS = sizeof(nbr) * BITS_PER_BYTE; for (argv_i = 1; argv_i < argc; argv_i++) { mask = 1 << NBITS - 1; nbr = atoi(argv[argv_i]); cout << nbr << " in octal is 0" << oct << nbr << dec << endl; cout << nbr << " in hexadecimal is 0x" << hex << nbr << dec << endl; cout << nbr << " in binary is "; for (i = flag = 0; i < NBITS; i++, mask >>= 1) { if (bitset = nbr & mask) flag = 1; if (flag) { if (bitset) { cout << '1'; ones++; } else cout << '0'; } } if (!flag) cout << '0'; cout << " (is " << (ones % 2 ? "odious" : "evil") << ")\n"; } return 0; }