#include #include #include #include using namespace std; // Функции для вывода значений в шестнадцатеричном и двоичном форматах void print_hex_byte(uint8_t byte) { static const char hex_chars[] = "0123456789abcdef"; cout << hex_chars[byte >> 4] << hex_chars[byte & 0x0F]; } void print_hex_value(uint16_t value) { uint8_t* bytes = reinterpret_cast(&value); print_hex_byte(bytes[0]); cout << " "; print_hex_byte(bytes[1]); } void print_binary_byte(uint8_t byte) { for (int i = 7; i >= 0; --i) { cout << ((byte >> i) & 1); } } void print_binary_value(uint16_t value) { uint8_t* bytes = reinterpret_cast(&value); print_binary_byte(bytes[0]); cout << " "; print_binary_byte(bytes[1]); } int main() { // Установка русской локали setlocale(LC_ALL, "Russian"); uint16_t operand1, operand2; char operation; // Ввод первого операнда cout << "Введите первый операнд (uint16_t): "; cin >> operand1; // Ввод оператора cout << "Введите оператор (&, |, ^): "; cin >> operation; // Проверка корректности оператора if (operation != '&' && operation != '|' && operation != '^') { cout << "Ошибка: недопустимый оператор. Используйте &, |, ^." << endl; return 1; } // Ввод второго операнда cout << "Введите второй операнд (uint16_t): "; cin >> operand2; uint16_t result; // Выполнение операции switch (operation) { case '&': result = operand1 & operand2; break; case '|': result = operand1 | operand2; break; case '^': result = operand1 ^ operand2; break; } // Вывод результатов cout << "Результат в шестнадцатеричном формате:" << endl; print_hex_value(operand1); cout << " " << operation << " "; print_hex_value(operand2); cout << " = "; print_hex_value(result); cout << endl; cout << "Результат в двоичном формате:" << endl; print_binary_value(operand1); cout << " " << operation << " "; print_binary_value(operand2); cout << " = "; print_binary_value(result); cout << endl; return 0; }