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

Битовые поля (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;

Назначение

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

Пример

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