Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
83 строки
2.2 KiB
C++
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;
|
|
} |