Zapisywanie Tej Samej Wartości w Systemie Binarnym, Ósemkowym, Dziesiętnym i Szesnastkowym
Podstawa liczbowa (lub „radix”) to liczba odrębnych cyfr, jakich używa system liczbowy, zanim przejdzie na kolejną wartość pozycyjną — system dziesiętny używa 10 (0–9), binarny używa 2 (0–1), ósemkowy używa 8 (0–7), a szesnastkowy używa 16 (0–9, a następnie A–F). Podaj liczbę całkowitą w dowolnej z tych czterech podstaw, a ten kalkulator pokaże tę samą wartość zapisaną we wszystkich czterech naraz.
System binarny to sposób, w jaki komputery wewnętrznie przedstawiają każdą wartość (każda cyfra to jeden „bit”); system szesnastkowy to popularny skrót dla systemu binarnego w programowaniu (każda cyfra szesnastkowa zastępuje dokładnie 4 cyfry binarne, więc jest znacznie bardziej zwięzła do czytania i wpisywania); system ósemkowy pojawia się w starszych uprawnieniach plików Unix i niektórych kontekstach niskopoziomowych. System dziesiętny to po prostu codzienny system o podstawie 10.
Wzór
Każdy pozycyjny system liczbowy działa tak samo: każda cyfra jest mnożona przez podstawę podniesioną do jej potęgi wartości pozycyjnej, a następnie sumowana:
gdzie to cyfra na pozycji (licząc od 0 od najbardziej prawej cyfry). Przeliczanie na inną podstawę wielokrotnie dzieli wartość dziesiętną przez nową podstawę, zapisując każdą resztę — odwrotność powyższej sumy.
Przykład obliczeniowy
Przeliczanie liczby binarnej 11111111 na pozostałe trzy podstawy:
- Czytając od prawej do lewej, każda
1wnosi swoją wartość pozycyjną: . - Dziesiętnie: 255.
- Ósemkowo: wielokrotne dzielenie 255 przez 8 (255 ÷ 8 = 31 r7, 31 ÷ 8 = 3 r7, 3 ÷ 8 = 0 r3) daje odczytane od dołu do góry reszty: 377.
- Szesnastkowo: 255 ÷ 16 = 15 r15, 15 ÷ 16 = 0 r15 — obie reszty to 15 (F w systemie szesnastkowym), co daje FF.
Kluczowe czynniki do rozważenia
- Pojedynczy bajt (8 bitów) może przedstawiać dokładnie 256 różnych wartości — od 0 do 255 w systemie dziesiętnym, lub od 00 do FF w systemie szesnastkowym. To dokładnie dlatego 255/FF jest tak powszechną wartością referencyjną w informatyce — to maksymalna wartość, jaką może przechowywać pojedynczy bajt, co pojawia się wszędzie, od kanałów kolorów RGB (0-255 na kanał) po sieci i formaty plików.
- System ósemkowy był historycznie bardziej powszechny niż dzisiaj, głównie z powodu starszych rozmiarów słowa komputerowego. System ósemkowy (podstawa 8) mapuje się dokładnie na grupy 3 cyfr binarnych, co pasowało do komputerów zbudowanych wokół rozmiarów słowa podzielnych przez 3 bity — współczesna informatyka w dużej mierze przeszła na system szesnastkowy (który mapuje się na grupy 4 bitów), ponieważ większość nowoczesnego sprzętu używa rozmiarów słowa podzielnych przez 4 i 8, choć system ósemkowy nadal pojawia się w konkretnych kontekstach, jak notacja uprawnień plików Unix (np. chmod 755).
- Częstym błędem programisty jest mylenie podstawy liczby wyłącznie na podstawie kontekstu. Cyfry „10” oznaczają bardzo różne wartości w zależności od podstawy — 10 w systemie dziesiętnym, 2 w binarnym, 8 w ósemkowym, 16 w szesnastkowym — dlatego języki programowania zwykle wymagają jawnego przedrostka (jak 0x dla szesnastkowego lub 0b dla binarnego), aby usunąć wszelką niejednoznaczność co do zamierzonej podstawy.
- Każdą liczbę całkowitą można teoretycznie przedstawić w DOWOLNEJ podstawie, nie tylko w tych czterech. Binarny, ósemkowy, dziesiętny i szesnastkowy to po prostu cztery podstawy o najczęstszym rzeczywistym zastosowaniu w informatyce i codziennej matematyce — ta sama zasada notacji pozycyjnej, z której korzysta ten kalkulator, rozciąga się na dowolną podstawę, jak podstawa 3, podstawa 20 czy podstawa 60 (podstawa tradycyjnego podziału czasu i kątów).
Częste Błędy
- Odczytywanie liczby o mieszanej podstawie bez przedrostka domyślnie jako dziesiętnej. „10” oznacza dziesięć w systemie dziesiętnym, ale tylko dwa w binarnym — zawsze sprawdź (lub podaj), w jakiej podstawie zapisano liczbę, zanim wykonasz na niej obliczenia.
- Zakładanie, że wiodące zera zmieniają wartość. Podobnie jak w systemie dziesiętnym,
0011w systemie binarnym to ta sama wartość co11— wiodące zera mają znaczenie tylko przy formatowaniu o stałej szerokości (np. wyświetlaniu pełnego bajtu), a nie dla rzeczywistej wartości liczby. - Zapominanie, że cyfry szesnastkowe powyżej 9 używają liter, a nie liczb dwucyfrowych.
Szesnastkowa dziesiątka zapisywana jest jako
A, a nie10— zapisanie10w systemie szesnastkowym oznacza w rzeczywistości szesnaście w systemie dziesiętnym, co jest częstym źródłem poważnych błędów. - Próba bezpośredniego przeliczenia liczby ujemnej. Jak wspomina powyższe FAQ, ujemne wartości binarne/szesnastkowe zależą od wybranej szerokości bitowej i konwencji uzupełnienia do dwóch — nie istnieje jedno jednoznaczne przeliczenie, jak w przypadku liczb całkowitych nieujemnych.
Warto Wiedzieć
- Pracujesz z adresami sieciowymi zamiast dowolnych liczb? Kalkulator podsieci IP stosuje tę samą zależność binarno-dziesiętną specjalnie do adresów IPv4.
- Potrzebujesz bardzo dużych lub bardzo małych liczb dziesiętnych w zwartej formie? Kalkulator notacji naukowej obsługuje zamiast tego ten rodzaj konwersji.
- Ciekawi Cię znacznie starszy, pokrewny pozycyjnie system numeracji? Kalkulator liczb rzymskich przelicza na i z liczb rzymskich, które używają zupełnie innego (niepozycyjnego) podejścia.