diff --git a/task_2 b/task_2 new file mode 100644 index 0000000..4df1b3d --- /dev/null +++ b/task_2 @@ -0,0 +1,100 @@ +#include +#include +#include +#include + +using namespace std; + +char nibble_to_hex(uint8_t i) { +static const char digits[] = "0123456789ABCDEF"; +return digits[i]; +} + +void print_byte_hex(uint8_t byte) { +cout << nibble_to_hex(byte >> 4) << nibble_to_hex(byte & 0x0F); +} + +void print_hex(uint16_t value) { +uint8_t* bytes = (uint8_t*)&value; +print_byte_hex(bytes[0]); +cout << " "; +print_byte_hex(bytes[1]); +} + +void print_byte_binary(uint8_t byte) { +for (int i = 7; i >= 0; i--) { +cout << ((byte >> i) & 1); +if (i % 4 == 0 && i != 0) { +cout << " "; +} +} +} + +void print_binary(uint16_t value) { +uint8_t* bytes = (uint8_t*)&value; +print_byte_binary(bytes[0]); +print_byte_binary(bytes[1]); +} + +int main() { +setlocale(LC_ALL, "Rus"); +uint16_t operand1, operand2; +char operation; + +cout << "Введите первое число: "; +cin >> operand1; +if (cin.fail()) { + cerr << "Ошибка: неверный ввод для первого числа." << endl; + return 1; +} + +cout << "Введите знак (&, |, или ^): "; +cin >> operation; +if (cin.fail()) { + cerr << "Ошибка: неверный ввод для знака." << endl; + return 1; +} + +cout << "Введите второе число: "; +cin >> operand2; +if (cin.fail()) { + cerr << "Ошибка: неверный ввод для второго числа." << endl; + return 1; +} + +uint16_t result; +switch (operation) { +case '&': + result = operand1 & operand2; + break; +case '|': + result = operand1 | operand2; + break; +case '^': + result = operand1 ^ operand2; + break; +default: + cerr << "Ошибка: неверная операция." << endl; + return 1; +} + +cout << "Ваше выражение:" << operand1 << " " << operation << " " << operand2 << endl; + +cout << "Шестнадцатеричный вывод:" << endl; +print_hex(operand1); +cout << " " << operation << " "; +print_hex(operand2); +cout << " = "; +print_hex(result); +cout << endl; + +cout << "Двоичный вывод:" << endl; +print_binary(operand1); +cout << " " << operation << " " << endl; +print_binary(operand2); +cout << " = " << endl; +print_binary(result); +cout << endl; + +return 0; +} \ No newline at end of file