Битовые поля

Логический тип данных bool может содержать только значения true (соответствует числу 1) или false (соответствует числу 0). Эти значения помещаются в один бит, однако тип данных bool занимает в памяти целый байт (восемь бит). Остальные семь бит не содержат значений. Язык C++ поддерживает битовые поля, которые предоставляют доступ к отдельным битам, позволяя тем самым хранить в одной переменной несколько значений, занимающих указанное количество бит. Следует учитывать, что минимальный размер битового поля будет соответствовать типу int. Объявление битового поля имеет следующий формат:

struct [<Название битового поля>] {
   <Тип данных> [<Название поля 1>]:<Длина в битах>;
   ...
   <Тип данных> [<Название поля N>]:<Длина в битах>;
} [<Объявления переменных через запятую>];

В одной структуре можно использовать одновременно битовые поля и обычные поля. Обратите внимание на то, что название битового поля можно не указывать, кроме того, если длина поля составляет один бит, то перед названием поля следует указать ключевое слово unsigned. Пример объявления битового поля и переменной:

struct Status {
   unsigned flag1:1;
   unsigned flag2:1;
   unsigned flag3:1;
} status = {0, 1, 1};

Доступ к полю осуществляется также как и к полю структуры:

std::cout << status.flag1 << std::endl;     // 0
std::cout << status.flag2 << std::endl;     // 1
std::cout << status.flag3 << std::endl;     // 1
status.flag1 = 1;
std::cout << status.flag1 << std::endl;     // 1
std::cout << sizeof(Status) << std::endl;   // 4

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов