Основы программирования для автоматизированного проектирования и решения творческих задач. Романенко А.В - 23 стр.

UptoLike

Составители: 

Обращение к битовым полям структур и объединений осуществляется так же, как и к их обычным полям (см. раздел
11.2).
Рис. 8 Размещение битовых полей в структуре без выравнивания
П р и м е р 20
struct
{
short a: 12;
short b: 10;
} Pr;
Существуют два варианта размещения битовых полей в оперативной памяти ЭВМ. Если в структуре или объединении
нет дополнительных управляющих элементов, то битовые поля будут расположены компилятором друг за другом. Рассмот-
рим пример 20. В структуре Pr определены два поля. Общая длина структуры составляет четыре байта, однако, использовать
для хранения информации можно только первые двадцать два бита. Остальные биты остаются неиспользуемыми. Этот поря-
док размещения полей проиллюстрирован на рис. 8.
Часто реализация компиляторов позволяет изменить порядок размещения битовых полей: их можно выравнивать по
границам байтов. Для выравнивания битовых полей в структуру вводят неиспользуемые биты, формирующие промежуток
между полями. Для их создания вводят поля без имени.
П р и м е р 21
struct
{
short a: 12;
short : 4;
short b: 10;
} Pr ;
Рис. 9 Размещение битовых полей в структуре с выравниванием
В примере 21 между полями a и b находится поле из четырех бит. Так как это поле не имеет имени, то обратиться к не-
му невозможно. Главное назначение этого полясоздать промежуток между именованными битовыми полями, чтобы их
размещение в оперативной памяти совпадало с размещением обычных полей. Этот порядок иллюстрирует рис. 9.
П р и м е р 22
Применение битовых полей.
union
{
unsigned char c;
struct
{
unsigned b0: 1;
unsigned b1: 1;
unsigned b2: 1;
unsigned b3: 1;
unsigned b4: 1;
unsigned b5: 1;
unsigned b6: 1;
unsigned b7: 1;
} byte;
} cod;
cod.c = 'a';
printf("%u", cod.byte.b4);
4