АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Поля бітів

Об’єднання

Об’єднання – це засіб, який дозволяє запам’ятовувати різні типи даних в одній області пам’яті.

Об’єднання встановлюють таким самим чином, як і структури. Визначається шаблон об’єднання і змінні об’єднання.

Приклад шаблону:

union holdem

{int digit;

double bigfl;

char letter;

};

Приклад визначення змінних об’єднання типу holdem

 

union holdem bit;

union holdem save[10];

union holdem *pu;

 

Перший опис створює одну змінну bit. Компілятор виділяє достатньо пам’яті для розміщення самої більшої по довжині змінних з шаблону. В цьому випадку найбільшу довжину має змінна типу double – 8 байтів. Масив save мав би 10 елементів, кожний по 8 байтів, pu – вказівник на об’єднання.

Використання об’єднання

bit.digit=23; (використовується 2байти)

bit.bigfl=20; (8байтів)

bit.digit=’h’; (1байт)

 

При використанні об’єднання необхідно слідкувати за типом даних, який в даний момент записаний в об’єднанні.

 

Помилкове використання об’єднання

bit.letter=’A’; (використовується 2байти)

fl=3.0*bit.bigfl;

Помилка полягає в тому, що об’єднання має значення типу char, а наступний оператор використовує об’єднання як число типу float.

Можна використовувати операцію –> з об’єднаннями таким же чином, як і з структурами:

pu=&bit;

x=pu–>digit; ~ x=bit.digit;

Поля бітів

Бітові поля (bit fields) - особливий вид полів структури. Вони дають можливість задавати кількість бітів, в яких зберігаються елементи цілих типів. Бітові поля дозволяють раціонально використовувати пам'ять за допомогою зберігання даних в мінімально потрібній кількості бітів.
При оголошенні бітового поля вслід за типом елемента ставиться двокрапка (:) і вказується цілочисельна константа, яка задає розмір поля (кількість бітів). Розмір поля повинен бути константою в діапазоні між 0 і заданим загальним числом бітів, яке використовується для зберігання даного типу даних.


struct bit_field {
int bit_0: 1;
int bits_1_to_4: 4;
int bit_5: 1;
int bits_6_to_15: 10;
} bit_var;

 

Приклад. struct { int a: 1; unsigned b: 2; int: 1; unsigned d: 3; } flags;   Довжина поля бітів дорівнює числу кратному розміру типу int (2б). Для поля бітів можемо звертатися, як до елемента структури flags.a, flags.b і працювати, як з звичайним цілим беззнаковим числом.   flags.a=0; flags.c=1; (присвоєння) flags.a==0; (порівняння).  

Робота з полями бітів залежить від конкретної ЕОМ і реалізації транслятора.

 

Приклад: struct polebit

{

unsigned i:2;

unsigned j:6;

int 3; - без імені;

unsigned k:3;

unsigned l:2;

} mypole;

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)