W tym artykule
Czym jest arytmetyka binarna?
Arytmetyka binarna to matematyka wykonywana w systemie dwojkowym, używająca tylko cyfr 0 i 1. Każdy komputer cyfrowy przetwarza dane jako binarne na poziomie sprzetowym -- liczby całkowite, zmiennoprzecinkowe, adresy pamięci, a nawet tekst sa przechowywane i przetwarzane jako ciągi bitow. Zrozumienie systemu dwojkowego jest niezbędne w programowaniu niskopoziomowym, sieciach i logice cyfrowej.
Poza prostym dodawaniem i odejmowaniem arytmetyka binarna obejmuje operacje bitowe: AND, OR, XOR, NOT i przesunięcia bitow. Te operacje działają na poszczegolnych bitach i sa fundamentalne dla zadan takich jak ustawianie flag uprawnien, obliczanie sum kontrolnych, maskowanie adresow IP i optymalizacja kodu krytycznego wydajnosciowo.
Jak działają operacje bitowe
Operatory bitowe przetwarzaja liczby całkowite bit po bicie. Kazda operacja ma tablice prawdy definiujaca wyjście dla każdej kombinacji bitow wejściowych.
- AND, OR, XOR -- AND (&) zwraca 1 tylko gdy oba bity sa rowne 1, OR (|) zwraca 1 gdy ktorylkolwiek bit jest rowny 1, a XOR (^) zwraca 1 gdy bity sie różnią. Używane do maskowania, łączenia flag i przełączania bitow
- NOT i przesunięcia -- NOT (~) odwraca wszystkie bity, przesunięcie w lewo (<<) mnoży przez potęgi 2, a przesunięcie w prawo (>>) dzieli przez potęgi 2. Arytmetyczne przesunięcie w prawo zachowuje bit znaku dla liczb ujemnych
- Uzupełnienie do dwoch -- nowoczesne komputery reprezentuja ujemne liczby całkowite za pomoca uzupelnienia do dwoch, gdzie -1 to wszystkie bity ustawione na 1. Pozwala to temu samemu sprzotowi wykonywac zarowno dodawanie, jak i odejmowanie bez oddzielnego obwodu
Wypróbuj za darmo — bez rejestracji
Oblicz operacje binarne →Kiedy używać operacji bitowych
Operacje bitowe sa używane w programowaniu systemowym, sieciach i aplikacjach wrażliwych na wydajność.
- Flagi uprawnien -- uprawnienia plikow Unix (rwxr-xr-x = 0755) używają pol bitowych, gdzie każdy bit reprezentuje konkretne uprawnienie, sprawdzane za pomoca AND i ustawiane za pomoca OR
- Maski podsieci -- inzynierowie sieci używają operacji AND między adresami IP a maskami podsieci do określania granic sieci i prawidłowego kierowania ruchu
- Grafika i manipulacja kolorami -- kolory pikseli przechowywane jako liczby całkowite 0xRRGGBB używają przesunięć bitow i masek do wyodrębniania lub modyfikowania poszczegolnych kanałów czerwonego, zielonego i niebieskiego
Często zadawane pytania
Jaka jest różnica między liczbami ze znakiem a bez znaku?
Liczby całkowite bez znaku używają wszystkich bitow na wielkość, wiec 8-bitowa liczba bez znaku ma zakres od 0 do 255. Liczby całkowite ze znakiem rezerwuja najwyższy bit na znak (dodatni lub ujemny), wiec 8-bitowa liczba ze znakiem ma zakres od -128 do 127 w uzupelnieniu do dwoch. Wybor wpływa na zachowanie operacji przesunięcia w prawo i porownania.
Czy przesunięcie bitowe jest tym samym co mnożenie lub dzielenie przez 2?
Przesunięcie w lewo o n pozycji jest równoważne mnozeniu przez 2^n dla nieujemnych liczb całkowitych. Przesunięcie w prawo dzieli przez 2^n, ale zachowanie dla liczb ujemnych zależy od typu przesunięcia: arytmetycznego (zachowuje znak) lub logicznego (wypełnia zerami). W większości języków >> jest arytmetyczne dla typow ze znakiem, a >>> (gdzie dostępne) jest logiczne.
Dlaczego operacje bitowe sa nadal istotne we wspolczesnym kodzie?
Operacje bitowe sa szeroko stosowane we flagach funkcji, systemach uprawnien, protokolach sieciowych, kryptografii, funkcjach skrotu, renderowaniu grafiki i kompresji danych. Wykonuja sie w jednym cyklu CPU i nie używają dodatkowej pamięci, co czyni je idealnymi dla ścieżek krytycznych wydajnosciowo. Nowoczesne frameworki także używają ich wewnętrznie -- React używa ich dla flag efektow, a Linux dla uprawnien plikow.