Bitowy typ danych
Typ bitowy – typ danych reprezentujący ciąg bitów, łańcuch wartości zero-jedynkowych. Elementy tego typu są stosowane głównie do ustawiania flag oznaczających włączenie/wyłącznie pewnych opcji. Wartości bitowe zapisywane są za pomocą literałów bitowych.
PL/I
W języku PL/I typ danych bitowych opisany jest przez odpowiedni atrybut:
- BIT(n)
- BIT(n) <VARYING | VAR>
gdzie:
- n: jest długością ciągu bitów
- VARYING: atrybut oznaczający zmienną długość danych bitowych, w tym przypadku wartość “n” oznacza maksymalną długość danych bitowych. Zapis tego atrybutu może zostać skrócona do formy VAR.
Na danych bitowych można wykonywać następujące operacje:
- łącznie (analogicznie do konkatenacji łańcuchów znaków), operator ||, np. '10'B || '01'B='1001'B
- koniunkcji, operator &, np. '1010'B & '0011'B='0010'B
- alternatywa, operator |, np. '1010'B | '0011'B='1011'B
- negacja, operator ¬, np. ¬'1011'B='0100'B
- porównanie
Ponieważ języka PL/1 posiada niezwykle rozbudowany mechanizm konwersji, dostępne są również dla tego typu danych operacje arytmetyczne i łańcuchowe równocześnie, przy czym dla operacji łańcuchowych dane bitowe nie są przekształcane na znaki według tablicy znaków, lecz traktowane jak dane znakowe składające się ze znaków zer i jedynek.
Modula 2
Nieco inaczej zaimplementowano typ bitowy w języku Modula 2, w którym predefiniowany jest typ zbiorowy bitów BITSET. Wartości tego typu wyrażane są za pomocą literałów zbiorowych liczb całkowitych. Przynależność danej liczby „i” do zbioru oznacza ustawienie „i”-tego bitu na wartość 1, w przeciwnym przypadki na 0. Sprawdzenie ustawienia konkretnego bitu dokonuje się za pomocną operatora przynależności do zbioru IN, włączenie lub wyłączenie „i”-tej flagi (bitu), można dokonać odpowiednio operacjami dołączenia do zbioru INCL i usunięcia za zbioru EXCL. Ponieważ typ bitowy w Moduli 2 został zaimplementowany jako tablica bitów, operacje zbiorowe (teoriomnogościowe) są w rzeczywistości realizowane za pomocą operatorów bitowych – logicznych (AND, OR, NOT), co zwiększa efektywność kodu.
Common Lisp
W języku Common Lisp typ bitowy został zaimplementowany w postaci jednowymiarowej tablicy – wektora bitowego (bit-vector) zawierającego bity.
C
W języku C nie ma typu bitowego, lecz występują pola bitowe w strukturach i uniach. Pola te powinny mieć rozmiar (wyrażony w bitach) nie większy niż słowo maszynowe danego systemu komputerowego. Deklaracja pola bitowego ma postać:
typ [identyfikator]: rozmiar;
Identyfikator jest elementem opcjonalnym powyższej deklaracji. Deklaracja bez identyfikatora tworzy pole anonimowe. Taka konstrukcja umożliwia ustawienie kolejnych pól bitowych na określonej pozycji w słowie maszynowym, z pominięciem tych bitów które są nieistotne, do których nie będzie możliwości bezpośredniego odwołania. Pola bitowe w języku C są polami o typie bazowym jednego z typów podstawowych (najczęściej typ całkowity bez znaku: unsigned). W związku z tym wartości pól bitowych są reprezentowane za pomocą literałów takich jak dla typu bazowego. To samo dotyczy operacji, które są takie same jak dla typu bazowego.
Pozostałe języki
W większości języków programowania, nie ma typu bitowego. Zwykle do implementacji powyższej konstrukcji stosuje się typ całkowity, a dostęp do poszczególnych bitów (nadawanie wartości, sprawdzanie ustawienie konkretnego bitu), realizuje się za pomocą operatorów bitowych (np. and, or, xor, not – Pascal) i operatorów relacji, np. ustawienie najmniej znaczącego bitu: zmienna:=zmienna or $01; sprawdzenie ustawienia najmniej znaczącego bitu: if (zmienna and $01)<>0 then … .
Bibliografia
- Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ISBN 83-01-06146-4
- Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8
- Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
- Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., ISBN 83-85060-53-7, ISSN 0867-6011
Zobacz też
- Liczby całkowite
- String
- Typy danych
- Maska bitowa