Інформатика
Бітові поля : Бітові поля структур
 

Бітові поля структур

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

     Припустимо, необхідно створити структуру, що містить інфоромацію про час і дату деяких подій. Це можна зробити так:

struct DATA

{

     unsigned short Year;

     unsigned short Month;

     unsigned short Date;

     unsigned short Hour;

     unsigned short Minute;

     unsigned short Second;

};.

Таким чином, елемент типу DATA буде займати в пам'яті 6 елементів х 2 байта = 12 байт. В описі такої структури є надмірність, оскільки рік приймає значення від 0 до 99 (задіяно 7 біт), місяць - від 1 до 12 (4 біта), дата - від 1 до 31 (5 біт), години, хвилини, секунди - від 0 до 60 (6 біт).

     Використовуючи бітові структури, можна оголосити таку структуру:

struct DATA2

{

     unsigned Year:7;

     unsigned Month:4;

     unsigned Date:5;

     unsigned Hour:6;

     nsigned Minute:6;

     nsigned Second:6;

};

     Об'єкт такого типу буде займати 34 біта, що розмістяться в 5 байтах.

Приклад 1.

struct BIT_FIELDS

{

     int i:2;

     unsigned j:2;

     int:2;

     int k:2;

     int l:8;

} my_struct;

     Для полів з пропущеними іменами пам'ять однаково виділиться, але доступ до них неможливий, а до іменованих полів доступ повністю аналогічний "повномірним" полям.

 
© 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.ua
Розроблено за допомогою LERSUS