Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

83 строки
2.2 KiB
C++

#include <iostream>
#include <cstdint>
#include <bitset>
using namespace std;
void print_calculation(uint16_t a, uint16_t b, char op)
{
uint16_t result;
switch (op)
{
case '&': result = a & b;
break;
case '|': result = a | b;
break;
case '^': result = a ^ b;
break;
default:
cout << "Неверный оператор!" << endl;
return;
}
cout << "\n----Результат вычисления" << endl;
cout << "A = " << dec << a << " (0x";
cout << hex << uppercase << a << ")" << endl;
cout << "B = " << dec << b << " (0x";
cout << hex << uppercase << b << ")" << endl;
cout << "\nA " << op << " B = " << dec << result;
cout << " (0x" << hex << uppercase << result << ")" << endl;
cout << "\nПобитовое представление:" << endl;
cout << "A: " << bitset<16>(a) << endl;
cout << "B: " << bitset<16>(b) << endl;
cout << "R: " << bitset<16>(result) << endl;
cout << dec;
}
// Автотестирование
void run_tests()
{
cout << "----Автоматическое тестирование" << endl;
cout << "\n1. 0x00FF & 0x0F0F:" << endl;
print_calculation(0x00FF, 0x0F0F, '&');
cout << "\n2. 0x00FF | 0x0F0F:" << endl;
print_calculation(0x00FF, 0x0F0F, '|');
cout << "\n3. 0x00FF ^ 0x0F0F:" << endl;
print_calculation(0x00FF, 0x0F0F, '^');
cout << "\n4. 255 & 15:" << endl;
print_calculation(255, 15, '&');
cout << "\n5. 255 | 15:" << endl;
print_calculation(255, 15, '|');
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "----Калькулятор побитовых операций\n" << endl;
run_tests();
cout << "\n----Интерактивный режим" << endl;
uint16_t a, b;
char op;
cout << "\nВведите первый операнд (0-65535): ";
cin >> a;
cout << "Введите оператор (&, |, ^): ";
cin >> op;
cout << "Введите второй операнд (0-65535): ";
cin >> b;
print_calculation(a, b, op);
return 0;
}