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
edytujW 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
edytujNieco 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
edytujW języku Common Lisp typ bitowy został zaimplementowany w postaci jednowymiarowej tablicy – wektora bitowego (bit-vector) zawierającego bity.
C
edytujW 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
edytujW 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
edytuj- 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