Maska bitowa

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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 się 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żyć 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żyć operatora XOR i maski bitowej.

Słowo: 10010110

Maska: 10000001

Wynik: 00010111

Tym razem do rozwiązania zadania posłużyła alternatywa 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.

Zobacz też[edytuj | edytuj kod]