До сих пор минимальными адресуемыми элементами программы являлись объекты размером в 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.