Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
60
Добавлен:
29.04.2018
Размер:
341 Кб
Скачать
☆

Битовые поля (bit fields)

Тип данных

•это специальный тип членов структуры, в котором определено, из скольких бит состоит каждое поле

•позволяют работать с отдельными битами и их группами (полями) внутри переменных

•Должны быть объявлены как int или unsigned

Нельзя

•Объявлять вне структур

•Массивы битовых полей

•Применять &

Формат

struct имя_структуры { тип имя1: длина в битах; тип имя2: длина в битах; тип имя3: длина в битах;

. . .

тип имяN: длина в битах; };

// тип - int, unsigned.

•struct number { unsigned group: 4; // 4 бита от 0 до 15

•unsigned department: 3; // 3 бита от 0 до 8

•unsigned course: 3; }; // 3 бита от 0 до 8

•

// генерация номеров зачеток

•number fit[90];

•……………………………….

•void FillNumber(number * const doc)

•{ for (int i = 0; i <=99; i++)

•{ doc[i].group = i % 3 + 9;

•doc[i].department = 5;

•doc[i].course = 1; }

• }

// 1001101001

Неименованные поля

•struct { unsigned a1 : 4;

•unsigned : 2; // неиспользуемое

•unsigned a3 : 5;

•unsigned a4 : 2; } prim1;

Поле нулевой длины

•struct { unsigned b1 : 1;

•unsigned : 0;

•unsigned b3 : 5;

•unsigned b4 : 2;

•

} prim2;

Свойства

•поля бит могут быть не именованы. Если Имя пропущено, то соответствующее количество бит не используется (пропускается ).

•в структуре могут быть смешаны обычные переменные и поля бит

•длина структуры всегда кратна восьми.

Struct onebit { unsigned one_bit: 1;

} obj;

Назначение

•более компактное хранение объекта

Пример

Соседние файлы в папке Лекции