#include #include #include using namespace std; void print_calculation(uint16_t a, uint16_t b, char op) { uint16_t result; switch (op) { case '&': result = a & b; break; case '|': result = a | b; break; case '^': result = a ^ b; break; default: cout << "Неверный оператор!" << endl; return; } cout << "\n----Результат вычисления" << endl; cout << "A = " << dec << a << " (0x"; cout << hex << uppercase << a << ")" << endl; cout << "B = " << dec << b << " (0x"; cout << hex << uppercase << b << ")" << endl; cout << "\nA " << op << " B = " << dec << result; cout << " (0x" << hex << uppercase << result << ")" << endl; cout << "\nПобитовое представление:" << endl; cout << "A: " << bitset<16>(a) << endl; cout << "B: " << bitset<16>(b) << endl; cout << "R: " << bitset<16>(result) << endl; cout << dec; } // Автотестирование void run_tests() { cout << "----Автоматическое тестирование" << endl; cout << "\n1. 0x00FF & 0x0F0F:" << endl; print_calculation(0x00FF, 0x0F0F, '&'); cout << "\n2. 0x00FF | 0x0F0F:" << endl; print_calculation(0x00FF, 0x0F0F, '|'); cout << "\n3. 0x00FF ^ 0x0F0F:" << endl; print_calculation(0x00FF, 0x0F0F, '^'); cout << "\n4. 255 & 15:" << endl; print_calculation(255, 15, '&'); cout << "\n5. 255 | 15:" << endl; print_calculation(255, 15, '|'); } int main() { setlocale(LC_ALL, "Russian"); cout << "----Калькулятор побитовых операций\n" << endl; run_tests(); cout << "\n----Интерактивный режим" << endl; uint16_t a, b; char op; cout << "\nВведите первый операнд (0-65535): "; cin >> a; cout << "Введите оператор (&, |, ^): "; cin >> op; cout << "Введите второй операнд (0-65535): "; cin >> b; print_calculation(a, b, op); return 0; }