Объединение со структурой с битовыми полями в языке Си

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

Пример 2.14. Структура с полями, длиной в тетраду.

union { unsigned char z;

struct { unsigned int x:4; // Младшая тетрада

unsigned int y:4; // Старшая тетрада
}s; } un1;

Используя переменную un1.z, можно получить доступ к её отдельным тетрадам через переменные un1.s.x и un1.s.y. Например, оператор un1.s.y=0 обнуляет старшую тетраду.

А если использовать объединение un2 (Пример 2.14), то можно получить наиболее простой способ для доступа к отдельным битам. Например, оператор un2.s.bit1=0 обнуляет первый бит, а оператор un2.s.bit2_3=3 – устанавливает второй и третий биты одновременно.

Пример 2.15. Структура с полями с произвольной длиной.

union { unsigned char z;

struct { unsigned int bit0:1; // Бит 0

unsigned int bit1:1; // Бит 1

unsigned int bit2_3:2; // Биты 2 и 3

unsigned int bit4:1; // Бит 4

unsigned int bits5_7:3; // Биты 5-7

} s; } un2;

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

Для защиты лабораторной работы каждым студентом должен быть написан отчет о лабораторной работе, оформленный в отдельной тетради для лабораторных работ по курсу «Вычислительные машины, системы и сети», включающий тему, цель работы и содержащий следующие пункты:

1. Общие сведения о побитовых операциях.

2. Задание на занятие.

3. Алгоритм работы программы (блок-схема или словесное описание).

4. Листинг программы (смысловая часть).

5. Ответ на контрольный вопрос.

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

1. Как именуют минимальную единицу информации?

2. Сколько различных значений может хранить байт?

3. Чем определяется разрядность слова? Чему она равна?

4. Каким количеством основных цветов компьютером представляются все остальные цвета?

5. Какими функциями следует пользоваться для вывода цветного текста?

6. Каким образом переключается режим значения старшего бита цвета фона?

7. Какому арифметическому действию эквивалентен сдвиг влево?

8. Что такое маскирование? Что такое маска?

9. Какие существуют побитовые операторы в языке Си? Напишите их значения.

10. Опишите последовательность действий для установки бит в слове.

11. Опишите последовательность действий для сброса бит в слове.

12. Опишите последовательность действий для инверсии бит в слове.



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



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