
//
// To jest przykładowy kod z podrozdziału 25.5.2 „Klasa bitset” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <bitset>
#include <iostream>

using namespace std;

//------------------------------------------------------------------------------

void test()
{
    bitset<4> flags = 0xb;
    bitset<128> dword_bits(string("1010101010101010"));
    bitset<12345> lots;

    string s;
    cin>>s;
    bitset<12345> my_bits(s);    // Może spowodować wyjątek std::invalid_argument.
    bitset<32> b1, b2, b3;

    b1 = b2&b3; // i
b1 = b2|b3; // lub
b1 = b2^b3; // xor
b1 = ~b2;   // dopełnienie
b1 = b2<<2; // przesunięcie w lewo
b1 = b2>>3; // przesunięcie w prawo


    bitset<32> b;

    cin>>b;               // Wczytuje na wejściu obiekt typu bitset.
cout<<bitset<8>('c'); // Wysyła na wyjście wzorzec bitowy litery 'c'.
}

//------------------------------------------------------------------------------

int main()
try
{
    const int max = 10;
    bitset<max> b;
    while (cin>>b) {
        cout << b << '\n';
        for (int i =0; i<max; ++i) cout << b[i];    // odwrócona kolejność
        cout << '\n';
    }
}
catch (exception& e) {
    cerr << "Błąd: " << e.what() << '\n'; 
    return 1;
}
catch (...) {
    cerr << "Nieznany wyjątek!\n"; 
    return 2;
}

//------------------------------------------------------------------------------
