Бітові поля в С ++

Бітові поля в С ++
5 (100%) 1 голосування




бітові поля з ++, структури в с ++ для початківцівУ мові С ++ є можливість задавати елементам структур певну кількість пам'яті в бітах. Наприклад, якщо необхідно створити структуру даних, що відповідає розміру регістра в будь-якому пристрої. типом елемента (його називають двійкового полем) такої структури може бути целочисленное (найчастіше типу непідписаний) или перелічуваних (enum).

Синтаксично бітове поле в структурі визначається наступним чином:
бітові поля з ++, структури в с ++ для початківцівНаприклад:

Ми визначили структуру, в якій змінні будуть займати вказану кількість біт. 2 + 2 + 4 дає 8 біт (ми вирівняли до розміру байта). Якщо в цю структуру дописати ще непідписаний short п'ятий : 5; – вже буде задіяно 2 байта. У другому байті природно буде сміття 8 – 5 = 3 біти, які будуть незатребуваними.

На відміну від об'єднань (union) розмір бітових полів варіюється, в залежності від того, скільки біт програміст замовив. якщо замовлено 7 біт (скажімо дві змінні по 3 біти, і одна – 1 біт), то С ++ відведе один байт (8 біт) під ці три змінні. Якщо програміст замовить 11 біт, то С ++ відведе два байта (16 біт). Причому в другому байті будуть задіяні тільки 5 біт, а решта швидше за все будуть, як непотрібний хвіст. Тому при описі бітових полів слід враховувати таке “вирівнювання” до байта. Тобто,. розподіляти в ньому змінні так, щоб кожен біт був затребуваний. Для вирівнювання займаної пам'яті можна використовувати неіменовані бітові поля.

Наведемо ще один короткий приклад, в якому бітові поля відводяться під дату і час для демонстрації цієї технології.

Результат:

бітові поля з ++, структури в с ++ для початківців

Як бачите, бітові поля зберігають дату і час. Займає ця структура 6 байт, хоча для неї вистачить і п'яти. І на те є свої причини: сам компілятор може вирівнювати відведену пам'ять до парного числа байтів. Наприклад якщо ми замовили 18 біт, компілятор відведе нам не 3 байта, а 4, враховуючи що процесор любить працювати з байтами, а не з битами. Принаймні зберігати в пам'яті або своїх регістрах процесор вважає за краще не біти, а саме байти. Згідно з його розрядності: x32 корми 4 байта, x64 вже 8 байт. Нехай навіть з цих байт робота йде тільки з одним з них, інші все одно будуть підтягуватися.

невеликий підсумок: Бітові поля в структурах зазвичай використовуються в низкоуровневом програмуванні, коли робота йде зі значеннями, здатними займати не байти, а окремі біти (з огляду на те, що значення невеликі).

Нові уроки з програмування:

залишити коментар

Код розміщуйте в тегах: <pre class="lang:C ++ декодуванням:true ">ВАШ КОД</заздалегідь>