Informatyka
Konwersja między systemami liczbowymi
Wpisz liczbę, wskaż system wyjściowy i otrzymaj wszystkie pozostałe, a do tego kod uzupełnień do dwóch w wybranej szerokości słowa.
Dlaczego binarny, ósemkowy i szesnastkowy
Podstawa to nic innego niż liczba dostępnych cyfr, zanim trzeba przejść na kolejną pozycję. W systemie dziesiętnym jest ich dziesięć, w binarnym tylko zero i jeden, w szesnastkowym potrzeba szesnastu i dla sześciu ostatnich używa się liter od A do F. Wartość liczby nie zmienia się wraz z podstawą: zmienia się tylko sposób jej zapisu.
System binarny istnieje, bo układ elektroniczny niezawodnie rozróżnia dwa stany, a nie dziesięć. System szesnastkowy istnieje, bo binarny jest dla człowieka nieczytelny: każda cyfra szesnastkowa odpowiada dokładnie czterem bitom, więc przeliczenie między nimi to bezpośrednie podstawienie grupa po grupie, bez rachunków. To samo dotyczy systemu ósemkowego, gdzie jedna cyfra to trzy bity.
Kod uzupełnień do dwóch to sposób, w jaki komputery przedstawiają liczby ujemne, a jego elegancja polega na tym, że dodawanie działa bez osobnych reguł dla znaku. Liczbę ujemną otrzymuje się, odwracając wszystkie bity jej wartości bezwzględnej i dodając jeden: na ośmiu bitach −5 staje się 11111011. Wynika stąd, że zakres nie jest symetryczny, bo zero zajmuje miejsce w połowie dodatniej: przy n bitach sięga od −2ⁿ⁻¹ do 2ⁿ⁻¹−1.
Częste błędy
- Mylenie bitu znaku ze znakiem minus: w kodzie uzupełnień do dwóch najbardziej znaczący bit ma wartość −2ⁿ⁻¹, a nie „minus". Dlatego 10000000 na ośmiu bitach to −128, a nie −0.
- Zapominanie, że zakres dodatni jest krótszy o jeden: na ośmiu bitach ze znakiem sięga do 127, a nie do 128. To przyczyna większości przepełnień w zadaniach.
- Czytanie liczby szesnastkowej jak dziesiętnej: 10 w systemie szesnastkowym to 16, a nie dziesięć. Gdy kontekst nie jest jasny, warto używać przedrostków 0x i 0b.
Najczęstsze pytania
Jak zamienić liczbę binarną na dziesiętną?
Mnoży się każdą cyfrę przez potęgę dwójki odpowiadającą jej pozycji, licząc od prawej od zera, i dodaje wyniki. 10110110 to 128+32+16+4+2 = 182.
Jak zamienić liczbę dziesiętną na binarną?
Dzieli się wielokrotnie przez dwa, zapisując reszty, a potem czyta reszty od ostatniej do pierwszej. Można też odejmować potęgi dwójki, zaczynając od największej, która się mieści.
Jak wyznaczyć uzupełnienie do dwóch liczby ujemnej?
Zapisuje się wartość bezwzględną binarnie na wybranej szerokości, odwraca wszystkie bity i dodaje jeden. Dla −5 na ośmiu bitach: 00000101 przechodzi w 11111010, a po dodaniu jedynki daje 11111011.
Dlaczego system szesnastkowy jest tak popularny w informatyce?
Ponieważ jedna cyfra szesnastkowa odpowiada dokładnie czterem bitom, więc bajt zapisuje się dwoma znakami. Przeliczenie z binarnym nie wymaga żadnych rachunków, w odróżnieniu od przeliczenia z dziesiętnym.
Jak działa to obliczenie
Wartość liczby o podstawie b i cyfrach cₙ…c₁c₀: V = Σ cᵢ · bⁱ, gdzie i zaczyna się od zera po prawej. Z systemu dziesiętnego na podstawę b: kolejne dzielenia przez b, reszty czytane wstecz. Bezpośrednia odpowiedniość: jedna cyfra szesnastkowa to 4 bity, a ósemkowa 3 bity, więc binarny przelicza się przez grupowanie bitów. Uzupełnienie do dwóch na n bitach: dla wartości v nieujemnej wzorem jest samo v; dla v ujemnej jest to 2ⁿ + v, otrzymane przez odwrócenie bitów |v| i dodanie 1. Zakres ze znakiem: od −2ⁿ⁻¹ do 2ⁿ⁻¹ − 1.
Powiązane kalkulatory
Algebra Boole'a
Tabela prawdy wyrażenia logicznego z AND, OR, NOT i XOR.
Konwerter Base64
Z tekstu, liczby całkowitej, szesnastkowego lub binarnego na Base64 i z powrotem, z grupami 6 bitów.
Kalkulator podsieci IPv4
Sieć, broadcast, dostępne hosty i maski z adresu IPv4 z prefiksem CIDR.
Operacje bitowe
AND, OR, XOR, NOT, przesunięcia i rotacje na liczbach 8-, 16-, 32- lub 64-bitowych, z widocznymi bitami.