Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
7.17 Кб
Скачать

Інформатика — Теорія — Бітові поля структур    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

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

Вступ

Теорія

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

Висновки

Версія для друку

  Бітові поля структур      При оголошенні бітового поля вслід за типом елемента ставиться двокрапка (:) і вказується цілочисельна константа, яка задає розмір поля (кількість бітів). Розмір поля повинен бути константою в діапазоні між 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

Соседние файлы в папке content