Главная страница
Навигация по странице:

  • "МИРЭА

  • Поразрядные операции и их применение

  • Москва

  • Отчет по выполнению практического задания


    Скачать 0.56 Mb.
    НазваниеОтчет по выполнению практического задания
    Анкорprakticheskaya_1
    Дата13.02.2023
    Размер0.56 Mb.
    Формат файлаdocx
    Имя файлаprakticheskaya_1.docx
    ТипОтчет
    #935101




    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

    Федеральное государственное бюджетное образовательное учреждение высшего образования

    "МИРЭА - Российский технологический университет"
    РТУ МИРЭА






    Отчет по выполнению практического задания №1

    Поразрядные операции и их применение

    Дисциплина Структуры и алгоритмы обработки данных







    Выполнил студент
    Группы ИКБО-11-21

    Чиркинян К.А.








    Москва 2022

    Цель.

    • Получить навыки применения поразрядных операций в алгоритмах.

    Задание 1.
      1. Постановка задачи


    Выполнить упражнения по применению битовых операций по изменению значений битов в ячейке оперативной памяти, созданию маски для изменения значения ячейки. Создание выражения, содержащего поразрядные операции, для выполнения определенной операции над значением ячейки

    Вариант 30.



    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 чисел




    написать администратору сайта