Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Поля битов



Элементом структуры может быть битовое поле, обеспечивающее доступ к отдельным битам памяти. Вне структур битовые поля объявлять нельзя. Нельзя также организовывать массивы битовых полей и нельзя применять к полям операцию определения адреса. В общем случае тип структуры с битовым полем задается в следующем виде:

struct { unsigned идентификатор 1: длина-поля 1;

unsigned идентификатор 2: длина-поля 2; }

длина — поля задается целым выражением или константой. Эта константа определяет число битов, отведенное соответствующему полю. Поле нулевой длины обозначает выравнивание на границу следующего слова.

Пример:

struct { unsigned a1: 1;

unsigned a2: 2;

unsigned a3: 5;

unsigned a4: 2; } prim;

Структуры битовых полей могут содержать и знаковые компоненты. Такие компоненты автоматически размещаются на соответствующих границах слов, при этом некоторые биты слов могут оставаться неиспользованными.

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

#include <stdio.h>

int main(int argc, char* argv[])

{

struct {

unsigned f1: 2;

unsigned f2: 2;

unsigned f3: 2;

unsigned f4: 2;

} bitstr;

unsigned char a=27; //00011011

// unsigned char* b;

// b=(unsigned char*) &bitstr;

// *b=a;

*((unsigned char*) &bitstr)=a;

printf("f1=%d f2=%d f3=%d f4=%d", bitstr.f1, bitstr.f2, bitstr.f3, bitstr.f4);

getchar();

return 0;

}





Дата публикования: 2015-01-13; Прочитано: 225 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...