Яка різниця між структурою та бітовим полем у C?

Коли ми оголошуємо структуру або тип об’єднання, розмір змінної типу структури/об’єднання залежить від індивідуального розміру її елементів. Замість розміру пам’яті за замовчуванням ви можете встановити розмір у бітах, щоб обмежити розмір. Зазначений розмір називається бітовими полями.

Бітові поля. Бітові поля є unsigned int члени структур, які займають задану кількість суміжних бітів від одиниці до sizeof(int). Їх можна використовувати як звичайну змінну int в арифметичних і логічних операціях. Бітові поля є звичайними членами структури та мають певну бітову ширину.

Можна використовувати бітові поля щоб зменшити споживання пам’яті, коли програмі потрібна низка цілих змінних, які завжди матимуть низькі значення. Наприклад, у багатьох системах для зберігання цілого значення потрібно два байти (16 біт) пам’яті; іноді значення, які потрібно зберегти, насправді потребують лише одного або двох бітів.

Бітові поля можна оголошувати лише як частину структури. Оператор адреси ( & ) не можна застосувати до компонентів бітового поля.

Бітові поля дозволяють програмістам вказувати розмір кожного поля в бітах. Об’єднання можуть зберігати лише одне поле за раз, виділяючи лише стільки місця, щоб зберегти найбільше, і «марнувати» простір під час збереження менших. Програми можуть використовувати бітові поля та об’єднання незалежно або спільно для виконання деяких перетворень даних.

У мові програмування C, ширина бітового поля не може перевищувати ширину основного типу, і те, чи є бітові поля int, які явно не підписані або непідписані, підписаними чи беззнаковими, визначається реалізацією. Наприклад, int b:3; може мати діапазон значень 0..7 або -4..