Przejdź do zawartości

Maska bitowa

Z Wikipedii, wolnej encyklopedii

Maska bitowasł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.

Zobacz też

[edytuj | edytuj kod]