Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursrab-2011-укр.doc
Скачиваний:
3
Добавлен:
20.08.2019
Размер:
245.76 Кб
Скачать

Завдання 3. Робота з побітовими операціями

Мета: Придбання практичних навичок в роботі з порозрядними логічними операціями та операціями зсуву.

Постановка задачі

В завданні 3 передбачається використання побітових операцій. Дані вводяться з файлу на диску та виводяться в файл та на екран. Імена вхідного та вихідного файлів задаються в командному рядку.

При виконанні 3-го завдання необхідно:

  1. При відкритті чи створенні будь-яких файлів необхідно перевіряти наявність помилок введення-виведення.

  2. Результат виконання завдання повинен бути представлений в наочній формі, наприклад:

Результат об’єднання значень

65535 = 11111111 11111111

1 = 00000000 00000001 операцією порозрядне І (&) дорівнює

1 = 00000000 00000001

Варіанти індивідуальних завдань

1. Заданий масив цілих чисел. Скласти функцію unpackChar, яка приймає цілу двохбайтову змінну типу unsigned та «розпаковує» з неї два символи. Програма повинна друкувати початкові змінні в десятковому та двійковому представленні, а отримані символи - у символьному, десятковому та двійковому представленні .

2. Скласти функцію, яка переставляє розряди в двійковому представленні цілого додатнього числа М в зворотньому порядку. Отримане число приймається за значення функції В(М). Скласти програму для виведення у файл значень функції В(М) на відрізку [512, 1023].

3. Заданий масив чисел. Визначити суму тих елементів масиву, двійкові коди яких містять одиницю у бітах 1 та 5. Визначити кільксть розрядів, рівних 0, в двійковому представленні суми.

4. Заданий масив з 12 беззнакових чисел. Скласти функцію, що визначає, чи містить двійковий код цілого беззнакового числа М нулі в розрядах m та n. Використовуючи цю функцію, визначити кільксть тих елементів масиву, двійкові коди яких містять нуль у бітах 1 та 5.

5. Заданий масив зі знакових чисел. Біти від’ємних чисел зсунути вправо на два розряди, а біти 0 та 4 додатніх чисел встановити в 0. Елементи отриманого массиву представити у шістнадцятковому, десятковому та двійковому вигляді.

6. Заданий масив з 10 чисел. Скласти функцію, що інвертує біти молодшого байта цілого числа М, який є параметром функції. Отримане значення повертається в якості результата функції. Застосувати цю функцію до всіх елементів масиву. Результати представити у шістнадцятковому, десятковому та двійковому вигляді.

7. Скласти функцію, що переставляє полубайти в двійковому представленні символа (символ, що містить до перестановки значення 0х3f, після перестановки повинен містити f3). Застосувати цю функцію до всіх символів заданого рядку. Результати представити у символьному, шістнадцятковому та двійковому вигляді.

8. Заданий масив з 10 цілих чисел. Інвертувати біти всіх від’ємних чисел та знайти суму елементів отриманого масиву. Використовувати функцію, яка інвертує біти від’ємного числа, а невід’ємне залишає без змін.

9. Заданий масив з беззнакових чисел. Коди парних елементів масиву зсунути на 2 розряди вліво, а в непарних елементах встановити в 1 біти молодшого полубайта. Елементи отриманого масиву представити у шістнадцятковому, десятковому та двійковому форматі.

10. Заданий масив чисел. Визначити суму додатніх елементів, що містять 1 у 7, 5 та 3 бітах, та суму від’ємних елементів. Перевірити наявність у від’ємній сумі 0 в 6, 4 та 2 бітах.

11. Скласти програму, що кодує текстовий файл, шляхом перестановки парних та непарних бітів. Передбачити можливість декодування.

12. Скласти програму, що кодує текстовий файл, шляхом інвертування порядку бітів у байтах в текстовому файлі. Передбачити можливість декодування.

13. Задані 2 масиви по 10 цілих чисел. Порівнюються порозрядно відповідні елементи масивів. Сформувати новый масив, елементами якого є числа, що містять одиниці у тих бітах, які відповідають співпадаючим розрядам операндів, та нулі, якщо відповідні розряди операндів мають різні значення. Результати представити у шістнадцятковому, десятковому та двійковому форматі.

14. Визначити елементи заданого масиву цілих чисел, в двійковому представленні яких міститься найбільша та найменша кільксть одиниць. Для підрахунку кількості одиниць в двійковому представленні цілого числа використовувати функцію.

15. Задане ціле число. Скласти функцію, яка формує код символу, щоутворюється бітами с 4-го по 11 в двійковому представленні числа. Результат представити в шістнадцятковому, двійковому форматах та вивести цей символ.

16. Задане ціле число x. Скласти функцію, яка циклично зсуває x вліво на n розрядів.

17. Виконати швидке сортування (алгоритм Хоора) масиву цілих чисел у порядку зростання кількості нулів, що містяться у двійковому представленні кожного елемента масиву.

18. Встановити 1 в четвертих бітах та 0 – в сьомих бітах всіх елементів массиву цілих чисел та визначити суму елементів отриманого массиву. Для установлення в 1 n-го біта цілого числа та в 0 m-го біта скласти функцію.

19. Скласти функцію inv(x,q,m), що повертає значення x з інвертованими m бітами, починаючи з позиції q (інші біти не змінюються).

20. Скласти програму, що кодує текстовий файл шляхом перестановки першого та останнього бітів у байті, 2-го та передостаннього та т.ін. Передбачити можливість декодування. Для кодування символа скласти функцію.

21. Перемножити ті елементи масиву цілих чисел, коди яких містять у 6-му біті 1, а у 2-му - 0. З результату виділити молодший байт та визначити символ, якому відповідає отриманий код (якщо такий символ існує). Результат представити у символьному, шістнадцятковому та двійковому вигляді.

22. Байти елементів масиву цілих чисел, в сьомих бітах яких міститься 1, зсунути вправо на один розряд. Визначити середнє арифметичне елементів отриманого масиву. Для перетворення цілого числа, в n-му біті якого міститься одиниця,зсувом вправо на m розрядів, скласти функцію.

23. Виконати сортування масиву символів у порядку зменшення кількості одиниць, що містяться у двійковому представленні кожного символа. Застосувати сортування вибором.

24. Встановити 0 в 5-му біті всіх елементів масиву цілих чисел з парним індексом та 1 - в 4-му біті всіх непарних елементів масиву. Визначити суму елементів отриманого масиву.

25. Розробити функцію setbit(x,p,n,y), що повертає значення x, у якому n бітів, починаючи с p-ї позиції, замінені на n лівих розрядів з y (інші біти не змінюються).

26. Заданий масив з 10 цілих чисел. Інвертувати біти всіх положительных чисел (кроме знакового бита) та Знайти суму елементів полученного массива. Визначити содержит ли результат 1 у бітах 2 та 4. Для преобразования елементів массива использовать функцію , которая получает в качестве параметра ціле число та, якщо это число – положительное, инвертирует в нем все разряды, кроме знакового; якщо число отрицательное, оставляет его без изменения.

27. Скласти программу кодирования / декодирования текстового файла по следующему алгоритму: над каждым символом исходного файла осуществляется побитовая операция «исключающее или» с текущим символом пароля, т.е.

Свыхвх ^ p, где Свых - текущий символ выходного файла, Свх – текущий символ входного файла, p – текущий символ пароля, который выбирается следующим образом: от 1-го до последнего, по достижении последнего символа снова выбирается первый символ пароля та т.д.. Пароль (от 1 до 10 символів) та выбор режима работы (кодирование / декодирование) вводятся с клавиатуры.

28. Скласти программу, которая вводит два символа с клавиатуры та передает їх функції packChar, которая упаковывает їх в одну переменную типа unsigned. Программа должна выводить исходные символы та результат в десятичном та двійковому представленні .

29. Скласти функцію unpackInt, которая принимает переменную типа

unsigned long та распаковывает з нее два двухбайтовых цілих числа. Программа должна печатать исходную переменную та полученные числа в десятичном та двійковому представленні .

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

Режим работы (кодирование / декодирование) вводятся с клавиатуры.

31. Заданий масив з 10 символів. Скласти программу, инвертирующую порядок бит в байтах.

32. В рядку символів переставить местами значения парних та непарних битов.

33. Задано ціле число. Используя побитовые операции, сформировать код символа, образованный битами с 2-го по 9. Результат представить в 16-ричном формате та вывести этот символ.

34. Даны 2 массива по 10 цілих чисел.Сравниваются поразрядно соответствующие елементи массивов.Сформувати новый массив, элементами которого являются числа, содержащие единицы в тех битах, которые соответствуют совпадающим розрядим операндов, та нули, якщо соответствующие разряды операндов имеют различные значения. Результаты представить в 10-ичном та 16-ричнои форматах.

35. Задано ціле число х. Скласти программу, которая циклически сдвигает х вліво на n розрядів.

36. Перемножить елементи массива цілих чисел, коды которых містять в 6-м бите 0. Из результата выделить младший байт та визначити символ, которому он соответствует(якщо он существует).

37. Заданий масив з 10 цілих чисел. Інвертувати біти всіх положительных чисел (кроме знакового бита) та Знайти суму елементів полученного массива. Визначити , содержит ли результат 1 у бітах 2 та 4.

38. Заданий масив з 10 цілих чисел. Інвертувати біти младших полубайтов всіх елементів массива та Знайти суму елементів полученного массива.

39. Скласти программу, кодирующую строку символів шляхом перестановки первого та последнего бито в байте, 2-го та предпоследнего та т.д. Предксмотреть возможность декодирования..

40. Задано ціле число. Используя побитовые операции, сформировать код символа, образованный битами с 3-го по 10. Результат представить в 16-ричном формате та вывести этот символ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]