Добавлен: 19.03.2024
Просмотров: 49
Скачиваний: 10
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
"МИРЭА - Российский технологический университет"
РТУ МИРЭА
Отчет по выполнению практического задания №1
Поразрядные операции и их применение
Дисциплина Структуры и алгоритмы обработки данных
Выполнил студент
Группы ИКБО-11-21
Чиркинян К.А.
Москва 2022
Цель.
-
Получить навыки применения поразрядных операций в алгоритмах.
Задание 1.
-
Постановка задачи
Выполнить упражнения по применению битовых операций по изменению значений битов в ячейке оперативной памяти, созданию маски для изменения значения ячейки. Создание выражения, содержащего поразрядные операции, для выполнения определенной операции над значением ячейки
Вариант 30.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ |
Федеральное государственное бюджетное образовательное учреждение высшего образования "МИРЭА - Российский технологический университет" РТУ МИРЭА |
|
Отчет по выполнению практического задания №1 Поразрядные операции и их применение | |
Дисциплина Структуры и алгоритмы обработки данных | |
| |
Выполнил студент Группы ИКБО-11-21 | Чиркинян К.А. |
| |
Москва 2022
Получить навыки применения поразрядных операций в алгоритмах.
-
Постановка задачи
№ | 1 Номер бита | 2 Номер бита | 3 множитель | 4 делитель | 5 Задание для выражения |
30 | С 7-ого бита пять слева | 5-ый, 7-ой , 11-ый | 32 | 32 | Обнулить n-ый бит, используя маску (вар 1) |
2.1 Решение задачи. Пункт 1
Определить переменную целого типа, присвоить ей значение, используя константу в шестнадцатеричной системе счисления.
Разработать оператор присваивания и его выражение, которое установит с
7-ого бита пять слева исходного значения переменной в значение 1, используя соответствующую маску и поразрядную операцию.
long long int number = 0x412; // ... 0100 0001 0010 long long int mask = 0xE8; // ... 1110 1000 int bit_disjunction(int a, int b) { // функция для поразрядной дизъюнкции return a | b; } |
Код реализации алгоритма
Рисунок 1 – Код функции, реализующей поразрядную дизъюнкцию
Рисунок 2 – Код функции main
Тестирование алгоритма
Рисунок 3 – Тестирование алгоритма задания 1
2.2 Решение задачи. Пункт 2
Определить переменную целого типа.
Разработать оператор присваивания и его выражение, которое обнуляет 5-ый, 7-ой, 11-ый биты исходного значения переменной, используя соответствующую маску и поразрядную операцию. Значение в переменную вводится с клавиатуры.
long long int number2; long long int mask2 = 0xFFFFF75F; // ... 0111 0101 1111 int bit_conjunction(int a, int b) { // функция для поразрядной конъюнкции return a & b; } |
Код реализации алгоритма
Рисунок 4 – Код функции, реализующей поразрядную конъюнкцию
Рисунок 5 – Код функции main
Тестирование алгоритма
Рисунок 6 – Тестирование алгоритма задания 2
2.3 Решение задачи. Пункт 3
Определить переменную целого типа.
Разработать оператор присваивания и выражение, которое умножает значение переменной на 32, используя соответствующую поразрядную операцию. Изменяемое число вводится с клавиатуры.
int multiplication(int a, int b) { // функция для побитового сдвига влево return a << b; } |
Код реализации алгоритма
Рисунок 7 – Код функции, реализующей побитовый сдвиг влево
Рисунок 8 – Код функции main
Тестирование алгоритма
Рисунок 9 – Тестирование алгоритма задания 3
2.4 Решение задачи. Пункт 4
Определить переменную целого типа.
Разработать оператор присваивания и выражение, которое делит значение переменной на 32, используя соответствующую поразрядную операцию. Изменяемое число вводится с клавиатуры.
int division(int a, int b) { // функция для побитового сдвига вправо return a >> b; } |
Код реализации алгоритма
Рисунок 10 – Код функции, реализующей побитовый сдвиг влево
Рисунок 11 – Код функции main
Тестирование алгоритма
Рисунок 12 – Тестирование алгоритма задания 4
2.5 Решение задачи. Пункт 5
Определить переменную целого типа.
Обнулить n-ый бит, используя маску. Разработать оператор присваивания и выражение, в котором используются только поразрядные операции. В выражении используется маска – переменная. Маска инициализирована единицей в младшем разряде (вар 1). Изменяемое число вводится с клавиатуры.
long long int mask5 = 0x01; mask5 = mask5 << x; mask5 = mask5; int bit_conjunction(int a, int b) { // функция для поразрядной конъюнкции return a & b; } |
Код реализации алгоритма
Рисунок 13 – Код функции main
Тестирование алгоритма
Рисунок 14 – Тестирование алгоритма задания 5
Задание 2.
1.1 Постановка задачи
Реализовать задачу по сортировке данных файла, используя для представления данных файла (107 семизначных чисел) в памяти, массив битов. Смоделировать тест на последовательности, вводимой с клавиатуры.
Ограничения: объем – 1 Мб; время – 10с; числа уникальны.
2.1 Алгоритм решения
…
2.2 Тестирование алгоритма
Рисунок 15 – Пример входных данных
Рисунок 16 – Пример выходных данных
2.3 Код реализации алгоритма
Рисунок 17 – Код реализации алгоритма
2.4 Тестирование алгоритма на входных данных объемом 100 и 1000 чисел
…