Maska bitowa
Z Wikipedii
Maska bitowa jest słowem o długości odpowiadającej maskowanemu słowu (zwykle 8, 16, 32 bity). Stosuje się ją przy programowaniu w asemblerze, jako maska podsieci i wszędzie tam, gdzie zachodzi potrzeba zmiany określonych bitów.
Do nakładania maski używa sie operatorów binarnych AND, OR, XOR.
Przykład 1:
W słowie ośmiobitowym wyzerować 2 najmłodsze bity.
Należy użyć operatora AND i maski bitowej.
Słowo: 10010111
Maska: 11111100
Wynik: 10010100
Dlaczego? Otóż AND to tzw. iloczyn logiczny. Iloczyn dowolnej wartości z zerem daje zero, zaś iloczyn dowolnej wartości logicznej z jedynką daje tą samą wartość, tak jak przy zwykłym 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:
W słowie ośmiobitowym ustawić 2 najstarsze bity.
Należy użyc operatora OR (suma logiczna) i maski bitowej.
Słowo: 10010111
Maska: 11000000
Wynik: 11010111
Co się stało: dodając zero do jakiejkolwiek wartości uzyskujemy tę samą wartość. Sumując dowolny bit z jedynką uzyskujemy 1.
Przykład 3:
W słowie ośmiobitowym zanegować 2 skrajne bity.
Należy użyc operatora XOR i maski bitowej.
Słowo: 10010110
Maska: 10000001
Wynik: 00010111
Tym razem do rozwiązania zadania posłużyła alterantywa wykluczająca, czyli XOR. Jeśli bit zostanie zamaskowany bitem o wartości 0, pozostanie niezmieniony.
Dla lepszego zrozumienia działania operatorów logicznych przy maskowaniu można posłużyć się tablicami prawdy dla danego operatora.