#include <iostream> #include <iomanip> #include <string> #include <climits> using namespace std; const size_t maxBits = sizeof(short) * CHAR_BIT; int main(int argc, char *argv[]) { string line; bool inputOk; short n; while (true) { cout << "Enter binary number (" << maxBits; cout << " bits or less) : " << endl; do { cout << "> "; getline(cin,line); inputOk = true; for (size_t i = 0; (i < line.size()) && (inputOk == true); i++) { if ((line[i] != '0') && (line[i] != '1')) { inputOk = false; cout << "non-bit entered" << endl; } } if ((inputOk == true) && (line.size() > maxBits)) { inputOk = false; cout << "too big for " << maxBits << "-bit integer" << endl; } } while (inputOk == false); // Convert string of bits to an integer n = 0; for (int i = line.size()-1, j = 0; i >= 0; --i,j++) { n |= (line[i] - '0') << j; } cout << line << " = " << n << endl; } return 0; } /* OUTPUT: Enter binary number (16 bits or less) : > 101000 101000 = 40 Enter binary number (16 bits or less) : > 10 10 = 2 Enter binary number (16 bits or less) : > 10 10 = 2 Enter binary number (16 bits or less) : > 101 101 = 5 Enter binary number (16 bits or less) : > */