Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Результаты битовых операций




 

op1 op2 ~op1 op1 & op2 op1 ^ op2 op1 | op2
           
           
           
           

 

Рассмотрим несколько примеров.

Первый пример показывает, как с помощью операции | можно установить в единицу выбранные биты операнда:

/* a = 00001001 = 9 */

char a, b; /* 00011010 = 26 */

a = 9; /* -------- */

b = a | 26 /* b = 31 */ /* b = 00011011 = 31 */

 

Следующий пример показывает, как с помощью операции & можно обнулить старшую часть байта:

 

char a, b; /* a = 00101101 = 45 */

a = 45; /* 00001111 */

b = a & 0x0F; /* -------- */

/* b = 00001101 = 13 */

 

Очередной пример показывает, как с помощью операции ^ можно инвертировать часть байта:

 

char a, b; /* a = 00101001 = 41 */

a = 41; /* 00001111 */

b = a ^ 0x0F; /* -------- */

/* b = 00100110 = 38 */

 

К битовым операциям относятся операции сдвига << и >>:

 

a << b сдвиг битов переменной a влево на b позиций,

a >> b сдвиг битов переменной a вправо на b позиций.

 

Например:

char a, b;

a = 26; /* a = 00011010 = 26 */

b = a << 2; /* b = 01101000 = 104 */

 

Сдвиг влево равносилен умножению на 2 в соответствующей степени. Сдвиг вправо - делению на 2 в соответствующей степени.

Все битовые операции выполняются слева направо. В следующей строке приведены битовые операции в порядке уменьшения их приоритета: ~, << >>, &, ^, |

 

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

 

1. Изучить методические указания по выполнению лабораторной работы

2. Составить программу на алгоритмическом языке Си

3. Составить контрольный пример, отладить программу

4. Ответить на вопросы преподавателя

 

ВАРИАНТЫ ЗАДАНИЙ

 

1. Реализовать функции чтения и записи даты (день, месяц, год в столетии) из типа int (16 бит) по формату: 5 бит – день, 4 бита – месяц, 7 бит – год в столетии.

Пример: 15 марта 2008 -> 0001000 0011 01111

2. Реализовать функции чтения и записи времени (часы, минуты, секунды) из типа int (16 бит) по формату: 6 бит – секунды, 6 бит – минуты, 4 бита – часы от 0 до 12.

3. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: возраст (от 0 до 127) – 7 бит, пол – 1 бит, семейное положение – 1 бит, количество детей - 4 бита.

4. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: масть карты – 2 бита, значение карты – 4 бита, номер колоды – 1 бит.

5. Реализовать функции чтения и записи из типа int (16 бит) числа с плавающей точкой по формату: 1 бит - знак мантиссы, 10 бит – мантисса, 1 бит – знак степени, 4 бита – степень.

Пример: 7.87 (тоже самое 787*10-2) -> 0 1100010011 1 0010

Пример: -5676500.45 (можем записать только -567*104) -> 1 1000110111 0 0100.

Примечание.

Значение степени можно получить следующим образом:

pw=floor(log10(fabs(val)))-2;

Значение мантиссы можно получить следующим образом:

fpp = floor(val/pow10(pw));

6. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: цвет обуви – 4 бита, размер (от 33 до 48) – 4 бита, женская/мужская – 1 бит, сезон - 2 бита.

7. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: внутренний диаметр колеса (R12 - R19) – 3 бита, ширина (значение ширины минус 100мм) – 7 бит, профиль (значение минус 40) 6 бит.

Пример: 175/70 R13 – 001110 1001011 001 (здесь 175 – ширина, 70 профиль).

8. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: номер лабораторной работы – 4 бита, оценка – 3 бита, количество бонусов – 4 бита.

9. Реализовать функции чтения и записи из типа int (16 бит) следующих данных: цвет – 4 бита, номер модели – 4 бита, количество – 7 бит.

10. Реализовать функции чтения и записи из типа char (8 бит) следующих данных: цвет окна – 4 бита, наличие кнопок свернуть и минимизировать – 2 бита, модальное/немодальное окно – 1 бит, разрешено изменять размеры – 1 бит.

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

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

13. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на четыре бита слева каждого символа наложить 4-ёх битную маску (операция XOR), затем пять бит справа каждого символа расположить в обратном порядке. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать и убедиться, что строка стала равна исходной.

14. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на четыре бита слева каждого символа наложить 4-ёх битную маску (операция XOR), затем первый и третий биты слева поменять местами. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

15. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: четыре бита слева каждого символа инвертировать, на пять бит справа наложить побитовую маску (операция XOR). После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать и убедиться, что строка стала равна исходной.

16. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: поменять местами первые четыре бита каждого символа с четырьмя последними битами каждого следующего символа; тоже самое сделать с последним и первым символом строки. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

17. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на средние четыре бита каждого символа наложить 4-ёх битную маску (операция XOR), затем поменять местами старшие 3 бита с младшими. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

18. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на два старших и два младших бита каждого символа наложить 4-ёх битную маску (операция XOR), средние шесть бит инвертировать. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

19. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на все биты каждого символа наложить восьми битную маску (операция XOR), затем поменять местами четные и нечетные биты. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

20. Реализовать функции шифрования и дешифрования строк. Принцип шифрования: два младших бита каждого символа поместить в середину оставшихся шести бит, на результат наложить восьми битную маску (операция XOR). После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной.

 

СОДЕРЖАНИЕ ОТЧЕТА

 

Отчет должен содержать:

- программу

- для вариантов 1-10:

× входные параметры (день, месяц, год; цвет, модель, количество и т.п.)

× значение числа типа int, которое было сформировано по этим данным

× бинарное представление сформированного числа типа int

× какое-либо число типа int в качестве входного параметра

× прочитанные данные их этого числа (день, месяц, год; цвет, модель, количество и т.п.)

× продемонстрировать корректность работы программы на примере записи данных в число int и обратного чтения;

 

- для вариантов 11-20:

× исходную строку символов

× зашифрованную строку

× последовательность кодов символов зашифрованной строки

× продемонстрировать корректность работы программы на примере шифрования и дешифрования строки символов

 

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

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных