Отчет по практической работе 1 по дисциплине Структуры и алгоритмы обработки данных
![]()
|
Институт Информационных технологий Кафедра Математического обеспечения и стандартизации информационных технологий
Москва 2021 Цель работыПолучение навыков применения поразрядных операций в алгоритмах. Постановка задачиРазработать программу, которая продемонстрирует выполнение упражнений варианта 14. Результаты выполнения упражнения выводить на монитор. Требования к упражнениям: Определить переменную целого типа, присвоить ей значение, используя константу в шестнадцатеричной системе счисления. Разработать функцию, которое установит заданные в задании биты исходного значения переменной в значение 1, используя соответствующую маску и поразрядную операцию. Разработать функцию, которая обнуляет заданные в задании биты исходного значения целочисленной переменной, введенной пользователем, используя соответствующую маску и поразрядную операцию. Разработать функцию, которая умножает значение целочисленной переменной, введенной пользователем, на множитель, используя соответствующую поразрядную операцию. Разработать функцию, которая делит значение целочисленной переменной, введенной пользователем, на делитель, используя соответствующую поразрядную операцию. Разработать функцию, реализующую задание, в которой используются только поразрядные операции. В выражении используется маска – переменная. Маска инициализируется единицей в младшем разряде (маска 1) или единицей в старшем разряде (маска 2). Изменяемое число и n вводится с клавиатуры. Провести тестирование программы на небольших объемах данных, введенных вручную. Разработанные тесты должны покрывать все случаи входных данных (средний, лучший, худший). Результаты тестирования свести в сводные таблицы. Составить отчет, отобразив в нем описание выполнения всех этапов разработки, тестирования и код всей программы со скриншотами результатов тестирования. Вариант №14. Условие задания:
РешениеПоразрядные операции выполняются над отдельными разрядами или битами чисел. В данных операциях в качестве операндов могут выступать только целые числа. Каждое число имеет определенное двоичное представление. Логические операции над числами представляют поразрядные операции. В языке программирования C/C++ используются следующие логические операции: && – логическое «И»; || – логическое «ИЛИ»; !– логическое «НЕТ». Также используются две операции поразрядного сдвига: << – сдвиг влево значения операнда на заданное количество бит. >> – сдвиг вправо значения операнда на заданное количество бит. Если в программе нужно, чтобы операция умножения/деления целочисленных операндов на 2, 4, 8 и т.д. происходила максимально быстро, то целесообразно использовать операцию сдвига влево/вправо. Заменяем 12-ый, 14-ый, 3-ий биты на 1 с помощью поразрядного ИЛИ(“|”) . Заменяем все нечетные биты на 0 с помощью поразрядного И(“&”) . Делаем сдвиг влево двоичного кода (умножение на 2n) с помощью (“<<”). Делаем сдвиг вправо двоичного кода (деление на 2n) с помощью (“>>”). Устанавливаем n-ый бит в 1 с помощью поразрядных операций (“>>”) и (“|”). ![]() ![]() ![]() ![]() Рис. 1 Интерфейс программы ТестированиеТаблица 1. Рабочий прогон программы
Из результатов выполнения программы видно, что программа работает правильно. В задании 1 число А21 переводим в двоичную систему счисления 00000000000000000101101000101001. Заменяем 12-ый, 14-ый, 3-ий биты на 1 с помощью маски 00000000000000000101000000001000. Получается 00000000000000000101101000101001. ![]() Рис. 2 Задание 1 В задании 2 число F22 переводим в двоичную систему счисления 00000000000000000000111100100010. Заменяем нечетные биты на 0 с помощью маски 1010101010101010101010101010101. Получается 00000000000000000000010100000000. ![]() Рис. 3 Задание 2 В задании 3 поразрядная операция производится над введённым пользователем значением в десятичном виде. Посредством умножения введённого пользователем значения на 2^n происходит побитовый сдвиг влево на 9 бит. ![]() Рис. 4 Задание 3 В задании 4 поразрядная операция производится над введённым пользователем значением в десятичном виде. Посредством деления введённого пользователем значения на 2^n происходит побитовый сдвиг вправо на 9 бит. ![]() Рис. 5 Задание 4 В задании 5 поразрядная операция производится c введённым пользователем значением (123) в десятичном виде и номером заменяемого бита. Посредством операции логического сложения мы заменяем 2 бит на единицу. ![]() Рис. 6 Задание 5 ВыводВ результате выполнения работы я освоила алгоритмы работы с поразрядными операциями и их реализацию на языке программирования C++ Исходный код программы
32> |