Поля битов

До сих пор минимальными адресуемыми элементами программы являлись объекты размером в 1 байт. Примерами таких объектов являлись данные типа char в языке Cи типа byte в языке Basic. Однако байт содержит 8 битов (двоичных цифр). Язык C позволяет манипулировать с отдельными битами информации. Такая необходимость возникает, в основном, при программировании аппаратуры, входящей в состав ПК, или программно-аппаратного комплекса. Средством реализации такой возможности является особый вид структуры, имеющий в качестве элементов так называемые поля битов.

Записываются такие структуры следующим образом:

struct{

unsigned [<имя>]: <число битов>;

..........................

}


Пример. Формат регистра состояния ГД RX211.

struct{

unsigned error :1;

unsigned initialize :1;

unsignedaddr :2;

unsigned rx02 :1;

unsigned :2;/* Hе используются */

unsigned density :1;

unsigned trreg :1;

unsignedenable :1;

unsigned done :1;

unsigned select :1;

unsigned funct :3;

unsigned go :1;

}save_211;

Поле битов без имени нулевой длины вызывает выравнивание последующих полей на границу объявленного типа данных, т.е они располагаются с адреса, кратного 16 для ОС MS DOS и 32 – Windows.