Шаг 84.
Поля битов

    На этом шаге рассмотрим использование полей битов в качестве полей структур.

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

    Описание поля битов состоит из описания типа поля, его имени и указанного после двоеточия размера поля в битах, например: unsigned status: 6;.

    Если имя поля опущено, то создается скрытое поле. Если размер поля битов представлен числом 0, то следующее поле битов начнется с границы машинного слова.


    Пример.
#include <iostream.h>
void main()
{
   struct Bits
   { 
     unsigned bit1: 3;
     unsigned bit2: 2;
     unsigned bit3: 3;
   } Good;
   void Binary(unsigned);
   Good.bit1 = 4; Good.bit2 = 3; Good.bit3 = 6;
   cout << "Контрольный вывод: " << Good.bit1 << " "
     << Good.bit2 << " " << Good.bit3 << endl;
   cout << "Сумма: ";
   Binary (Good.bit1 + Good.bit2 + Good.bit3);
} 

void Binary (unsigned A) // Функция выводит на экран двоичное 
                         //представление числа A.
{
    int i,N;
    if ( A > 255) N = 15;
    else N = 7;
    for (i=N; i >= 0; i--)
    { cout << ((A>>i)&1);   
      if (i==8) cout << " "; }
}
Текст этой программы можно взять здесь.

    На следующем шаге мы поговорим об объединениях.


Предыдущий шаг Содержание Следующий шаг