Czym są operacje bitowe?
Operacje bitowe działają bezpośrednio na poszczególnych bitach liczby. W operatorach AND, OR i XOR porównywane są bity znajdujące się na tych samych pozycjach w dwóch słowach. NOT działa na jednym słowie i zamienia każdy bit na przeciwny.
Przykładowo dla dwóch 8-bitowych słów pierwszy bit A jest zestawiany z pierwszym bitem B, drugi z drugim i tak dalej. Każda para daje dokładnie jeden bit wyniku.
Operator bitowy nie jest tym samym co działanie arytmetyczne. `1010 AND 1100` nie oznacza mnożenia dwóch liczb ani działania logicznego na całych wartościach — wynik powstaje osobno dla każdej pozycji bitowej.
Do dodawania i odejmowania liczb BIN służy kalkulator arytmetyki binarnej. Liczby ze znakiem są natomiast osobno obsługiwane przez kalkulator U2.
AND – kiedy bit wyniku ma wartość 1?
AND daje 1 tylko wtedy, gdy oba porównywane bity mają wartość 1. W każdym innym przypadku wynik na danej pozycji wynosi 0.
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
AND jest często używany do maskowania bitów. Jeżeli w masce na określonej pozycji znajduje się 0, odpowiadający bit wyniku zostaje wyzerowany. Jedynka w masce zachowuje wartość badanego bitu.
To pozwala np. sprawdzić, czy określony bit liczby jest ustawiony.
OR – ustawienie bitu, gdy wystarczy jedna jedynka
OR daje 1 wtedy, gdy co najmniej jeden z porównywanych bitów jest równy 1. Tylko para 0 i 0 daje wynik 0.
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
OR przydaje się do ustawiania wybranych bitów. Jeżeli w masce znajduje się 1, wynik na tej pozycji na pewno stanie się 1. Zero pozostawia badany bit bez zmiany.
Dlatego maski OR są wygodne, gdy chcemy włączyć konkretną flagę bez zmiany pozostałych bitów.
XOR – jedynka tylko dla różnych bitów
XOR, czyli alternatywa rozłączna, daje 1 wtedy, gdy dwa porównywane bity są różne. Para 0/0 oraz 1/1 daje wynik 0.
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR można wykorzystać do przełączania wskazanych bitów. XOR z 0 pozostawia bit bez zmiany, a XOR z 1 odwraca go.
W zadaniach szkolnych ważne jest przede wszystkim zapamiętanie, że XOR sprawdza różność bitów.
NOT – dlaczego szerokość słowa ma znaczenie?
NOT zamienia każdy bit 0 na 1 i każdy bit 1 na 0. W przeciwieństwie do AND, OR i XOR potrzebuje tylko jednego argumentu.
Trzeba jednak wiedzieć, ile bitów ma słowo. Dla 4 bitów `NOT 0011` daje `1100`, a dla 8 bitów `NOT 00000011` daje `11111100`. To dwie różne wartości.
Kalkulator stosuje maskę odpowiadającą wybranej szerokości. Dzięki temu wynik zawsze ma dokładnie 4, 8, 16, 32 albo 64 bity.
Nie interpretujemy tutaj najstarszego bitu jako znaku. Jeśli potrzebujesz interpretacji liczb ujemnych, przejdź do kalkulatora U2.
Przesunięcie w lewo << – mnożenie przez potęgę 2
Logiczne przesunięcie w lewo przenosi wszystkie bity o podaną liczbę pozycji w lewo. Z prawej strony pojawiają się zera. Bity, które wychodzą poza ustaloną szerokość słowa, są tracone.
Jeżeli żaden istotny bit nie zostanie odrzucony, przesunięcie o 1 pozycję odpowiada mnożeniu przez 2, o 2 pozycje przez 4, a o k pozycji przez 2k.
Przy stałej szerokości może wystąpić utrata starszych bitów. Wtedy wartość otrzymana w słowie nie jest już pełnym wynikiem arytmetycznego mnożenia.
Kalkulator pokazuje wynik po ograniczeniu do wybranej liczby bitów.
Logiczne przesunięcie w prawo >>
Przesunięcie w prawo przenosi bity w stronę mniej znaczących pozycji. Bity wypadające z prawej strony są tracone, a z lewej strony dopisywane są zera.
Dla liczby nieujemnej przesunięcie o 1 odpowiada dzieleniu całkowitemu przez 2, o 2 — przez 4, a ogólnie przez 2k.
Ten kalkulator wykonuje przesunięcie logiczne. Z lewej zawsze pojawia się zero. Nie wykonuje arytmetycznego przesunięcia liczby ujemnej z kopiowaniem bitu znaku.
Rozdzielenie tych dwóch przypadków jest ważne w zadaniach o słowach bez znaku i U2.
Dla ucznia i studenta – jak rozwiązać zadanie z operatorami bitowymi?
1. Ustal szerokość słowa. Szczególnie przy NOT i przesunięciu w lewo wynik zależy od liczby dostępnych bitów.
2. Wyrównaj oba argumenty do prawej. Krótszy zapis uzupełnij zerami z lewej strony.
3. Dla AND, OR i XOR pracuj kolumnami. Każda para bitów tworzy jeden bit wyniku zgodnie z tabelą operatora.
4. Dla NOT odwróć każdy bit. Nie dodawaj 1 — dodanie 1 jest elementem tworzenia liczby ujemnej w U2, a nie zwykłego NOT.
5. Przy przesunięciu policz pozycje. W `<<` zera wchodzą z prawej, w logicznym `>>` z lewej.
6. Sprawdź bity odrzucone poza słowo. Przy `<<` mogą one zmienić wynik względem pełnego mnożenia przez potęgę 2.
Do ćwiczenia dodawania i odejmowania bitów użyj kalkulatora arytmetyki binarnej. Do liczb ujemnych i przepełnienia ze znakiem służy kalkulator U2.
Pozostałe narzędzia szkolne i praktyczne znajdziesz w kategorii Informatyka.
Najczęstsze błędy w operacjach bitowych
- Mylenie AND z mnożeniem. Operator działa osobno na bitach, nie mnoży całych liczb.
- Mylenie OR z dodawaniem. 1 OR 1 daje 1, a nie 10₂.
- XOR traktowany jak OR. Dla 1 i 1 XOR daje 0.
- NOT bez ustalonej liczby bitów. Wynik negacji zależy od szerokości słowa.
- Brak wyrównania argumentów. Bity o tej samej wadze muszą znaleźć się w tej samej kolumnie.
- Zakładanie, że `A << 1` zawsze równa się pełnemu `A × 2`. Przy stałej szerokości starszy bit może zostać odrzucony.
- Mylenie logicznego i arytmetycznego `>>`. Tutaj z lewej strony zawsze dopisywane są zera.
Zadania do samodzielnego rozwiązania
Wykonaj operację bit po bicie, a następnie kliknij „Pokaż wynik”.
Zadanie 1 – AND i XOR
Dla A = 10110110 i B = 11001100 oblicz A AND B oraz A XOR B.
AND = 10000100, XOR = 01111010.
Zadanie 2 – NOT
Oblicz NOT dla 8-bitowego słowa 00110101.
Każde 0 zamieniamy na 1, a każdą 1 na 0.
Wynik: 11001010.
Zadanie 3 – przesunięcia
Dla 8-bitowego A = 00101101 oblicz A << 2 oraz A >> 2.
Wyniki: 10110100 oraz 00001011.
Szybka reguła dla masek bitowych
AND z 1 zachowuje bit, OR z 1 ustawia bit, XOR z 1 przełącza bit. Ta trójka reguł pomaga szybko zrozumieć, dlaczego maski bitowe są użyteczne.
Dla zera odpowiednio: AND zeruje bit, OR pozostawia go bez zmiany, XOR również pozostawia bez zmiany.
Powiązane narzędzia informatyczne
Do działań arytmetycznych na BIN przejdź do kalkulatora arytmetyki binarnej.
Do liczb ze znakiem, kodowania ujemnych wartości i przepełnienia użyj kalkulatora U2.
Jeśli chcesz tylko zmienić system zapisu liczby, użyj kalkulatora systemów liczbowych.
Pozostałe narzędzia są dostępne w kategorii Informatyka.
Wskazówka od KalkulatorXXL
Przed ręcznym działaniem zapisz oba argumenty na tej samej liczbie bitów. Dzięki temu każda kolumna odpowiada tej samej wadze: 1, 2, 4, 8, 16 itd.
Przy NOT i przesunięciach zawsze zaznacz szerokość słowa. Bez tej informacji wynik może być niejednoznaczny.