Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
3.5. Битовые поля
Стандарт C99, который часто является основой языка С++, позволяет описывать данные на уровне битов. Это достигается путем использования битовых полей, представляющие собой переменные типов signed или unsigned int, у которых используются лишь несколько бит для хранения данных. Такие переменные обычно записываются в структуру и единую последовательность бит. Рассмотрим пример, в котором задается структура flags, внутри которой задано 8 битовых полей:
Теперь, для определения того или иного бита переменной flags достаточно воспользоваться операцией
В этом случае будут установлены первый и третий биты, а остальные равны нулю, что соответствует числу 5. Данное значение можно отобразить, воспользовавшись функцией printf():
но переменной flags нельзя присваивать значения как обычной переменной, т.е. следующий программный код будет неверным:
Также нельзя присваивать значение flags переменным, например, следующая запись приведет к сообщению об ошибке:
Так как поля first,…, eighth могут содержать только один бит информации, то они принимают значения 0 или 1 для типа unsigned int и 0 и -1 - для типа signed int. Если полю присваивается значение за пределами этого диапазона, то оно выбирает первый бит из присваиваемого числа. В общем случае можно задавать любое число бит для описания полей, например
Здесь создается два двух битовых поля и одно восьмибитовое. В результате возможны следующие операции присваивания:
Структуры flags и prcode удобно использовать в условных операторах if и switch. Рассмотрим пример использования структуры битовых полей для описания свойств окна пользовательского интерфейса.
Определим следующие константы:
Пример инициализации структуры битовых полей
Видео по теме
|
1 |
Оглавление
|