#include #include #include #include #include #include using namespace std; // Функция для печати числа типа uint16_t в шестнадцатеричном и двоичном виде string number_to_string(uint16_t num) { ostringstream oss; oss << setfill('0') << setw(2) << hex << static_cast(num >> 8) << ' ' << setfill('0') << setw(2) << hex << static_cast(num); string hex_str = oss.str(); oss.str(""); oss << bitset<8>(num >> 8) << ' ' << bitset<8>(static_cast(num)); string bin_str = oss.str(); return hex_str + " " + bin_str; } int main() { uint16_t num1, num2; // Два операнда char op; // Оператор // Ввод выражения в формате "num1 op num2" cin >> dec >> num1 >> op >> num2; uint16_t result; // Результат операции // Выполнение операции в зависимости от введенного оператора switch (op) { case '&': result = num1 & num2; break; case '|': result = num1 | num2; break; case '^': result = num1 ^ num2; break; default: cout << "Unknown operator\n"; return 1; } // Формирование строки вывода string output = number_to_string(num1) + " & " + number_to_string(num2) + " = " + number_to_string(result); // Замена "&" на соответствующий оператор if (op == '|') { output = regex_replace(output, regex("&"), "|"); } else if (op == '^') { output = regex_replace(output, regex("&"), "^"); } // Печать результата cout << output << '\n'; return 0; }