Maska bitowa
Maska bitowa – słowo o długości odpowiadającej maskowanemu słowu (zwykle 8-, 16-, 32-bitowe). Stosuje się ją przy programowaniu w asemblerze (rzadziej w innych językach programowania), jako maska podsieci i wszędzie tam, gdzie zachodzi potrzeba zmiany wyłącznie określonych bitów.
Do nakładania maski używa się operatorów bitowych, takich jak AND, OR, XOR. Dla lepszego zrozumienia działania tych operatorów przy maskowaniu można posłużyć się tablicą prawdy dla danego operatora.
Przykład 1
[edytuj | edytuj kod]Zadanie: w słowie ośmiobitowym wyzerować 2 najmłodsze bity.
Rozwiązanie: należy użyć operatora AND (iloczyn) i maski bitowej 11111100
.
słowo: 10010111 maska: 11111100 wynik: 10010100
Opis: iloczyn dowolnej wartości z zerem daje zero, zaś iloczyn dowolnej wartości logicznej z jedynką daje tę samą wartość, tak jak przy standardowym mnożeniu (np. 5×0=0, 7×1=7). Odpowiadające sobie bity maski i słowa są przez siebie wymnażane, każdy z osobna. Te bity słowa, które zostały wymnożone przez 0 zostają wyzerowane, reszta jest nienaruszona.
Przykład 2
[edytuj | edytuj kod]Zadanie: w słowie ośmiobitowym ustawić 2 najstarsze bity.
Rozwiązanie: należy użyć operatora OR (suma) i maski bitowej 11000000
.
słowo: 10010111 maska: 11000000 wynik: 11010111
Opis: dodając zero do jakiejkolwiek wartości uzyskuje się tę samą wartość. Sumując dowolny bit z jedynką otrzyma się 1.
Przykład 3
[edytuj | edytuj kod]Zadanie: w słowie ośmiobitowym zanegować 2 skrajne bity.
Rozwiązanie: należy użyć operatora XOR i maski bitowej 10000001
.
słowo: 10010110 maska: 10000001 wynik: 00010111
Opis: tym razem do rozwiązania zadania służy alternatywa wykluczająca, czyli XOR. Jeśli bit zostanie zamaskowany bitem o wartości 0, pozostanie niezmieniony.