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

Завдання 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 положительных чисел сбросить.

Элементы полученного массива представить в шестнадщатеричном, десятичном и двоичном виде.

6. Дан массив из 10 чисел. Составить функцию, которая инвертирует биты младшего байта целого числа М, являющегося параметром функции. Полученное значение возвращается в качестве результата функции. Применить эту функцию ко всем элементам массива. Результаты представить в десятичном, шестнадцатеричном и двоичном виде.

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

8. Дан массив из 10 целых чисел. Инвертировать биты всех отрицательных чисел и найти сумму элементов полученного массива. Использовать функцию, которая инвертирует биты отрицательного числа, а неотрицательное оставляет без изменения.

9. Дан массив из беззнаковых чисел. Коды четных элементов массива сдвинуть на 2 разряда влево, а в нечетных элементах установить в 1 биты младшего полубайта. Элементы полученного массива представить в 16-ричном, 10-ичном и двоичном формате.

10. Дан массив чисел . Определить сумму положительных элементов, имеющих 1 в 7, 5 и 3 битах, и сумму отрицательных элементов. Проверить наличие в отрицательной сумме 0 в 6, 4 и 2 битах.

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

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

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

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

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

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, а во втором - 0. Из результата выделить младший байт и определить символ, которому соответствует полученный код (если такой символ есть). Результат представить в символьном, шестнадцатеричном и двоичном виде.

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

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-ричном формате и вывести этот символ.

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