1 семестр / лр 11
.docxУчреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра информационных систем и технологий
ОТЧЕТ
по лабораторной работе №11
Битовые операции
Выполнила: студентка ФИТ группы № 9 Каленик Алина
Проверила: Пустовалова Наталья Николаевна
Минск 2020
Задание №1
Ввести целое число A. Инвертировать все биты с 2 по 14, включая эти биты. Вывести результат.
#include <iostream>
using namespace std;
int main()
{
system("color FD");
int a, maska;
char tmp[33];
setlocale(LC_CTYPE, "Russian");
cout << " Введите число ";
cin >> a;
_itoa_s(a, tmp, 2);
cout << " В двоичной системе " << tmp << endl;
maska = 1;
maska = (maska << 13);
maska = maska - 1;
maska = maska << 1;
_itoa_s(maska, tmp, 2);
a = a ^ maska;
maska = 1 << 15;
a = a & (~maska);
_itoa_s(a, tmp, 2);
cout << " Инвертированное число " << tmp << endl;
}
Задание №2
Инвертировать n битов в числе А влево от позиции p, заменить ими m битов числа В, начиная с позиции q.
#include <iostream>
using namespace std;
int main()
{
system("color 0D");
int a, maska, n, p, m, q, b, g;
char tmp[33], arr[33], sqr[33];
g = (1 << 32) - 1;
_itoa_s(g, sqr, 2);
setlocale(LC_CTYPE, "Russian");
cout << " Введите число A ";
cin >> a;
_itoa_s(a, tmp, 2);
cout << " В двоичной системе " << tmp << endl;
cout << " Введите позицию ";
cin >> p;
cout << " Введите число битов ";
cin >> n;
maska = 1 << n;
maska = maska - 1;
maska = maska << p;
a = a ^ maska;
a = (a & maska) >> p;
_itoa_s(a, tmp, 2);
cout << " Инвертированная часть числа " << tmp << endl;
cout << " Введите число B ";
cin >> b;
_itoa_s(b, arr, 2);
cout << " В двоичной системе " << arr << endl;
cout << " Введите позицию ";
cin >> q;
cout << " Введите число битов ";
cin >> m;
maska = 1 << m;
maska -= 1;
n = (~a & maska) << q;
_itoa_s(a, tmp, 2);
g -= n;
_itoa_s(g, sqr, 2);
b &= g;
_itoa_s(b, arr, 2);
a &= maska;
b |= (a << q);
_itoa_s(b, arr, 2);
cout << " Измененное число " << arr << endl;
}