#include <iostream>
#include <sstream>
using std::endl;
using std::cout;
using std::string;
using std::ostringstream;
template <unsigned int N>
struct byte_t {
bool bits[N];
byte_t() {
for (int n = N; n > 0; n--)
bits[n] = false;
cout << "Created " << N << "-bit byte: " << str() << endl;
}
string dstr() {
ostringstream ss;
for (int n = N; n > 0; n--)
if (bits[n] == true) ss << '1';
else ss << '0';
return ss.str();
}
string str() {
ostringstream ss;
for (int n = N; n > 0; n--)
ss << bits[n];
return ss.str();
}
};
int main(int argc,char** argv) {
byte_t<8> my_byte;
cout << my_byte.str() << endl;
cout << my_byte.str() << endl;
cout << my_byte.dstr() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCnVzaW5nIHN0ZDo6ZW5kbDsKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OnN0cmluZzsKdXNpbmcgc3RkOjpvc3RyaW5nc3RyZWFtOwoKdGVtcGxhdGUgPHVuc2lnbmVkIGludCBOPgpzdHJ1Y3QgYnl0ZV90IHsKICAgIGJvb2wgYml0c1tOXTsKICAgIGJ5dGVfdCgpIHsKICAgICAgICBmb3IgKGludCBuID0gTjsgbiA+IDA7IG4tLSkKICAgICAgICAgICAgYml0c1tuXSA9IGZhbHNlOwogICAgICAgIGNvdXQgPDwgIkNyZWF0ZWQgIiA8PCBOIDw8ICItYml0IGJ5dGU6ICIgPDwgc3RyKCkgPDwgZW5kbDsKICAgIH0KICAgIHN0cmluZyBkc3RyKCkgewogICAgICAgIG9zdHJpbmdzdHJlYW0gc3M7CiAgICAgICAgZm9yIChpbnQgbiA9IE47IG4gPiAwOyBuLS0pCiAgICAgICAgICAgIGlmIChiaXRzW25dID09IHRydWUpIHNzIDw8ICcxJzsKICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgc3MgPDwgJzAnOwogICAgICAgIHJldHVybiBzcy5zdHIoKTsKICAgIH0KICAgIHN0cmluZyBzdHIoKSB7CiAgICAgICAgb3N0cmluZ3N0cmVhbSBzczsKICAgICAgICBmb3IgKGludCBuID0gTjsgbiA+IDA7IG4tLSkKICAgICAgICAgICAgc3MgPDwgYml0c1tuXTsKICAgICAgICByZXR1cm4gc3Muc3RyKCk7CiAgICB9Cn07CgppbnQgbWFpbihpbnQgYXJnYyxjaGFyKiogYXJndikgewogICAgYnl0ZV90PDg+IG15X2J5dGU7CiAgICBjb3V0IDw8IG15X2J5dGUuc3RyKCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgbXlfYnl0ZS5zdHIoKSA8PCBlbmRsOwogICAgY291dCA8PCBteV9ieXRlLmRzdHIoKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0KCg==