Pole bitowe

Pole bitowe – konstrukcja w języku C oraz C++, deklarująca zmienną składową struktury lub klasy jako zmienną typu całkowitoliczbowego, zajmującą określoną liczbę bitów[1]. Wartość wyrażenia określającego długość pola musi być znana w momencie kompilacji. Pola bitowe można zastosować w celu optymalizacji (zmniejszenia) zajętości pamięci. Należy jednak mieć na uwadze fakt, że czas dostępu do pola bitowego jest dłuższy od czasu dostępu do zmiennej całkowitej. Podstawowym zastosowaniem pól bitowych jest obsługa urządzeń zewnętrznych[2] dostępnych przez porty wejścia/wyjścia lub przez określony obszar pamięci.

Składnia definicji pola bitowego

  • Pole bitowe może być jakiegokolwiek typu caÅ‚kowitego, a wiÄ™c znakowe, short, int, long – w obu wariantach: signed albo unsigned – może być także logiczne, a nawet wyliczeniowe.
  • NastÄ™pnie umieszcza siÄ™ nazwÄ™ tego pola.
  • Za nim dwukropek i liczbÄ™ okreÅ›lajÄ…cÄ… na ilu bitach ma być przechowywana w tym polu informacja.

Przykład

W poniższym przykładzie struktura Data definiuje trzy pola bitowe:

  • pole m_dzienTygodnia pozwala przechowywać liczby o wartoÅ›ciach od 0 do 7, ponieważ tylko te można zapisać na trzech bitach.
  • pole m_dzienMiesiaca pozwala przechowywać liczby o wartoÅ›ciach od 0 do 31,
  • pole m_miesiac pozwala przechować liczby od 0 do 15.
struct Data
{
    unsigned short m_dzienTygodnia:3;
    unsigned short m_dzienMiesiaca:5;
    unsigned short m_miesiac:4;
};

Zobacz też

Przypisy

  1. ↑ C++ Bit Fields. [dostęp 2012-07-16]. (ang.).
  2. ↑ GrÄ™bosz 1993 ↓, s. 317.

Bibliografia

  • Jerzy GrÄ™bosz: Symfonia C++. Programowanie w jÄ™zyku C++ orientowane obiektowo. Kraków: Oficyna Kallimach, 1993.