Лабораторная работа №9

Побитовые операции языка Паскаль

Цель работы: получить навыки работы с отдельными разрядами целочисленных объектов.

Задания для подготовки к работе

1. Изучите побитовые операции в языке Паскаль.

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

3. Опишите блок-схему алгоритма решения задачи в укрупненных блоках.

4. Для каждой подзадачи опишите спецификацию. Блок-схему описывать не нужно.

5. Опишите блок-схему алгоритма решения задачи с использованием блоков «предопределенный процесс».

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

7. Подберите наборы тестовых данных с обоснованием их выбора.

Задания к работе

1. Наберите программу, отладьте ее и протестируйте.

2. Выполните анализ ошибок, выявленных при отладке программы.

Содержание отчет а

1. Формулировка задачи.

2. Ответы на пункты 3 – 7 заданий для подготовки к работе.

3. Описание ошибок, выявленных при отладке программы с указанием вида ошибки, и почему она была сделана.

Варианты заданий

1. Выполнить циклический сдвиг в двоичном представлении данного целого неотрицательного числа на k битов влево.

2. Определить, является ли восьмеричное представление данного целого неотрицательного числа палиндромом.

3. Преобразовать целое число, переставив цифры двоичного представления данного целого неотрицательного числа в обратном порядке.

4. Вывести в десятичном виде поле длины k двоичного представления данного целого неотрицательного числа слева от n -о разряда.

5. Выполнить циклический сдвиг в двоичном представлении данного целого неотрицательного числа на n разрядов вправо.

6. Преобразовать число, поменяв местами цифры каждой пары соседних цифр в двоичной записи данного целого неотрицательного числа. Обмен начинается с младших разрядов. Непарная старшая цифра остается без изменения.

7. Определить, является ли двоичное представление данного целого неотрицательного числа палиндромом.

8. Преобразовать число, переставив в обратном порядке цифры в шестнадцатеричном представлении данного целого неотрицательного числа.

9. Преобразовать число, поменяв местами цифры каждой пары соседних разрядов в восьмеричной записи данного целого неотрицательного числа. Непарная старшая цифра остается без изменения.

10. Выполнить циклический сдвиг на k цифр влево в восьмеричном представлении данного целого неотрицательного числа.

11. Определить, является ли шестнадцатеричное представление данного целого неотрицательного числа палиндромом.

12. Определить минимальную цифру в восьмеричной записи данного неотрицательного длинного целого.

13. Дано целое неотрицательное число n <216. Получить длинное целое число, нечетные биты которого равны 0, а последовательность четных битов представляет собой данное число n.

14. Даны два символа ch 1 и ch 2. Получить целое число, последовательность нечетных битов которого представляет собой код ch 1, а последовательность четных – код ch 2.

15. Дано длинное целое неотрицательное число k. Получить целое число, отбросив нечетные биты данного числа k.

16. Дано целое неотрицательное число n. Получить два однобайтовых целых числа, одно из которых представляется последовательностью четных битов данного n, а другое – последовательностью нечетных битов.

17. Дано длинное целое неотрицательное число. Получить число, инвертируя его нечетные биты.

18. Дано целое неотрицательное число <216. Получить число перестановкой битов каждого байта данного числа в обратном порядке.

19. Определить максимальную длину последовательности подряд идущих битов, равных 1 в двоичном представлении данного целого числа.

20. Определить максимальную цифру в восьмеричной записи данного неотрицательного длинного целого.

21. Просматривая биты данного длинного целого от старших к младшим, заменить каждое вхождение 101 на 000.

22. Удалить цифру А в записи данного 16-ричного числа.

23. Дано длинное целое неотрицательное число. Получить число, инвертируя его четные биты.

24. Дано длинное целое неотрицательное число. Получить число, удалив в двоичной записи данного числа нули.

25. Дано длинное целое неотрицательное число. Заменить каждую цифру 7 в восьмеричной записи этого числа нулем.

26. Дано длинное целое неотрицательное число. Получить число, удалив каждую вторую цифру в двоичной записи данного числа, начиная со старших цифр.

27. Просматривая последовательность битов данного длинного целого от младших к старшим, удалить каждое вхождение подпоследовательности 101, сдвигая все биты слева от удаляемых на 3 вправо. Освобождающиеся биты справа заполнить нулями.

28. Удалить в 16-ричной записи данного целого числа четные цифры

29. Просматривая биты данного длинного целого от старших к младшим заменить каждое вхождение 110 на 000.

30. Удалить цифру 1 в записи данного 8-ричного числа

Контрольные вопросы

1. Перечислите побитовые операции, реализованные в языке Паскаль в порядке убывания приоритета.

2. Какие типы операндов допустимы в побитовых операциях?

3. Какие побитовые операции можно выполнить с помощью арифметических операций?

4. Есть ли разница при выполнении операций сдвига целых знаковых и беззнаковых типов?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: