Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Элементом структуры может быть битовое поле, обеспечивающее доступ к отдельным битам памяти. Вне структур битовые поля объявлять нельзя. Нельзя также организовывать массивы битовых полей и нельзя применять к полям операцию определения адреса. В общем случае тип структуры с битовым полем задается в следующем виде:
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!