Czas/Liczby
Operacje bitowe
AND/OR/XOR/NAND/NOR/XNOR/NOT oraz przesunięcia na liczbach całkowitych o zadanej szerokości (8/16/32/64 bity) w dowolnym systemie liczbowym.
(liczba bitów przesunięcia, liczba dziesiętna)
Bitwise operations work directly on a number's individual bits rather than its value as a whole — the basis for permission flags, network protocols, and low-level optimization.
How to use it
- Enter one or two numbers in any base (binary, hex, decimal) and pick an operation (AND, OR, XOR, NAND, NOR, XNOR, NOT, or a shift).
- Pick a bit width (8/16/32/64 bits) — it affects how NOT and shifts behave at the number's boundaries.
- The result is shown instantly in several number bases for easy comparison.
Common uses
- Working with permission or setting flags packed into a single number (file system access rights, for example).
- Debugging a network protocol or binary format where fields are packed at the individual-bit level.
- A teaching example for understanding binary number representation and operations on it.
Things to keep in mind
The result of NOT and shifts depends on the chosen bit width — the same number gives a different result at 8-bit versus 32-bit width because of the different number of bits involved.
XOR is often used to toggle a flag — applying XOR twice with the same value returns the original.
Artykuł o tym narzędziu: Operacje bitowe: jak działają AND, OR i XOR na poziomie bitów
Najczęstsze pytania
Jaka jest różnica między AND, OR, XOR, NAND, NOR, XNOR i NOT?
AND daje 1 tylko gdy oba bity są 1, OR daje 1 gdy co najmniej jeden jest 1, a XOR daje 1 gdy bity się różnią. NAND/NOR/XNOR to ich zaprzeczenia, a NOT odwraca każdy bit pojedynczego operandu.
Jak obsługiwana jest szerokość bitowa i znak liczby?
Wybierz szerokość 8/16/32/64 bitów — operacje i przesunięcia odbywają się w tym zakresie. Liczby ujemne są reprezentowane w uzupełnieniu do dwóch, więc wynik NOT lub przesunięcia może wyglądać nieoczekiwanie, jeśli jesteś przyzwyczajony do notacji dziesiętnej.
Dlaczego wyrażenie takie jak "if (a & b == c)" często nie działa zgodnie z oczekiwaniami?
W większości języków operator porównania == ma wyższy priorytet niż operator bitowy &, więc wyrażenie jest obliczane jako "a & (b == c)", a nie tak, jak zwykle zamierza autor. Aby uniknąć tej pułapki, zawsze ujmuj operacje bitowe w jawne nawiasy.
Dlaczego stosować flagi bitowe zamiast osobnych zmiennych logicznych?
Zestaw flag zapakowany w jedną liczbę jest przechowywany i przesyłany bardziej kompaktowo (np. w protokołach sieciowych lub formatach plików), a sprawdzenie lub zmiana konkretnej flagi za pomocą AND/OR/XOR to jedna szybka operacja.
Jaka jest różnica między przesunięciem w lewo a w prawo?
Przesunięcie w lewo (<<) dodaje zera po prawej stronie, efektywnie mnożąc przez 2 podniesione do potęgi przesunięcia. Przesunięcie w prawo może być logiczne (dodaje zera po lewej) lub arytmetyczne (zachowuje bit znaku) — typ zależy od wybranego trybu.