пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Битовые поля

Язык Си имеет доступ к отдельным битам, то есть можно делать битовые поля, где каждая переменная может занимать такое количество бит, сколько укажет пользователь.

Битовые поля используются, если необходимо сохранить булевую информацию. В одном байте можно хранить несколько переменных. Устройство передает информацию, кодируя биты в  байты

Битовые поля должны быть организованы в виде структуры.

Для 32-битных сред - битовое поле от 1 до 32 бит
Для 64-битных сред - битовое поле от 1 до 64 бит

 Битовое поле, на самом деле, - это просто особый тип структуры, определяющей, какую длину имеет каждый член. Стандартный вид объявления битовых полей следующий:

struct имя структуры {

тип имя1: длина;
тип имя2: длина;
...
тип имяN: длина;

}

Битовые поля должны объявляться как int, unsigned или signed. Битовые поля длиной 1 должны объявляться как unsigned, поскольку 1 бит не может иметь знака.

Размер структуры, содержащей битовые поля, всегда кратен 8. То есть, если одно поле содержит 5 бит, а второе 4, то второе поле начинается с восьмого бита и три бита остаются неиспользованными. 
Неименованное поле может иметь нулевой размер. В этом случае следующее за ним поле смещается так, чтобы добрать до 8 бит. 
Если же адрес поля уже кратен 8 битам, то нулевое поле не добавит сдвига. 
Кроме того, если имеются обычные поля и битовые поля, то первое битовое поле будет сдвинуто так, чтобы добрать до 8 бит.

Запрещено:

  • Брать адрес битового поля
  • Обьявлять БП вне структуры
  • Организовывать массивы из БП

 


14.06.2016; 11:04
хиты: 438
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь