Информатика и технология программирования

       

Битовые поля


Поразрядные операции позволяют работать с отдельными битами и их группами (полями) внутри переменных (см.4.8). Аналогичные возможности дают элементы структуры, называемые битовыми полями

.


struct man
{ // 15 9 8 5 4 0


char name[20]; // ---------------------------------


unsigned dd:5; // | yy | mm | dd |


unsigned mm:4; // ---------------------------------


unsigned yy:7;
char *address; // 15 11 10 8 7 3 2 0


int xx:3; // ---------------------------------


int :5; // | | zz | ... | xx |


int zz:3; // ---------------------------------


};

Любая последовательность элементов структуры типа int или unsigned, в которой за каждым именем элемента следует двоеточие и целая константа, размещаются в отдельном машинном слове в виде групп битов (битовых полей). Константа определяет разрядность битового поля. Допустимая размерность машинного слова, в котором размещаются битовые поля, ограничивается транслятором. Допускается использование безымянных полей, которые в таком случае являются недоступными. Операции с битовыми полями ничем не отличаются по синтаксису от подобных операций с обычными элементами структуры. Естественно, что транслятор формирует команды, обеспечивающие маскирование, сдвиги и другие поразрядные операции, необходимые для превращения значения битового поля в значение обычной целой переменной без знака:


A.dd = 12; A.mm = 5; A.yy=96; A.dd++; A.zz = A.xx;




Содержание раздела