#include #include #include using namespace std; // инструменты для исследований и отладки // функции для печати void print_in_hex(uint8_t byte) { cout << setfill('0') << setw(2) << hex << (unsigned)byte << " "; } void print_in_hex(const void* data, size_t size) { for (size_t i = 0; i < size; i++) { cout << setfill('0') << setw(2) << hex << (unsigned)*((uint8_t*)data + i) << " "; if ((i + 1) % 16 == 0) cout << endl; } } void print_in_binary(uint8_t byte) { cout << setfill('0') << setw(8) << bitset<8>(byte) << " "; } void print_in_binary(const void* data, size_t size) { for (size_t i = 0; i < size; i++) { cout << setfill('0') << setw(8) << bitset<8>(*((uint8_t*)data + i)) << " "; if ((i + 1) % 4 == 0) cout << endl; } } // побитовый калькулятор int main() { uint16_t a, b, c; char op; cout << "101 & 100"; //вывод примеров cout << endl; cout << "102 | 100"; cout << endl; cout << "103 ^ 100"; cout << endl; cin >> a >> op >> b; // операции switch (op) { case '&': c = a & b; break; case '|': c = a | b; break; case '^': c = a ^ b; break; default: c = 0; break; } print_in_hex(&a, sizeof(a)); cout << op << " "; print_in_hex(&b, sizeof(b)); cout << "= "; print_in_hex(&c, sizeof(c)); cout << endl; print_in_binary(&a, sizeof(a)); cout << op << " "; print_in_binary(&b, sizeof(b)); cout << "= "; print_in_binary(&c, sizeof(c)); cout << endl; return 0; }