Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
92 строки
2.5 KiB
C++
92 строки
2.5 KiB
C++
#include <iostream>
|
|
#include <cstdint>
|
|
#include <iomanip>
|
|
#include <locale>
|
|
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<uint8_t*>(&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<uint8_t*>(&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;
|
|
}
|