Битовый калькулятор

main
SpelnikovNS 4 месяцев назад
Родитель d850739a95
Сommit 0bf7a1136f

91
2.cpp

@ -0,0 +1,91 @@
#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;
}
Загрузка…
Отмена
Сохранить