Czym jest system pozycyjny
W liczbie dziesiętnej 4095 cyfra 4 nie oznacza 4: oznacza 4000, bo stoi na miejscu tysięcy. Każda pozycja mnoży cyfrę przez potęgę liczby 10 (1, 10, 100, 1000…). To właśnie system pozycyjny, a jego podstawa to liczba różnych używanych cyfr: w systemie dziesiętnym jest ich dziesięć.
System binarny działa tak samo, ale ma podstawę 2: istnieją tylko 0 i 1, a każde miejsce jest warte dwa razy tyle co poprzednie. System szesnastkowy ma podstawę 16: szesnaście cyfr to 0–9 oraz litery A–F, a każde miejsce jest warte 16 razy więcej niż poprzednie. Komputery pracują w systemie binarnym, bo układ elektroniczny musi rozróżniać tylko dwa stany (wyłączony i włączony), a system szesnastkowy to krótki sposób zapisu tych bitów.
| Pozycja (od prawej do lewej) | Wartość w systemie binarnym | Wartość w systemie szesnastkowym |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4096 |
| 5. | 16 | 65 536 |
| 6. | 32 | 1 048 576 |
| 7. | 64 | 16 777 216 |
| 8. | 128 | 268 435 456 |
Z systemu binarnego na dziesiętny, ręcznie
Pod każdą cyfrą zapisujesz wartość jej miejsca i sumujesz tylko te miejsca, w których stoi 1. Przykład z liczbą 1101: od prawej do lewej miejsca są warte 1, 2, 4 i 8.
- Zapisz liczbę, a pod nią wartość każdej pozycji: 1 1 0 1 nad 8 4 2 1.
- Sprawdź, co stoi na każdym miejscu: 1 na miejscu ósemek, 1 na miejscu czwórek, 0 na miejscu dwójek i 1 na miejscu jedynek.
- Pomiń miejsca z zerem (tutaj miejsce dwójek).
- Dodaj: 8 + 4 + 0 + 1 = 13. Zatem 1101 w systemie binarnym to 13 w systemie dziesiętnym.
Z większą liczbą cyfr jest tak samo: 11111111 to 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, czyli największa wartość mieszcząca się w 8 bitach. A 10110110 to 128 + 32 + 16 + 4 + 2 = 182.
Z systemu dziesiętnego na binarny, przez kolejne dzielenia
Dzielisz liczbę przez 2 raz za razem, zapisując resztę z każdego dzielenia (zawsze 0 lub 1), aż iloraz wyniesie 0. Reszty odczytane od dołu do góry tworzą liczbę binarną. Przykład z liczbą 45:
- 45 ÷ 2 = 22, reszta 1
- 22 ÷ 2 = 11, reszta 0
- 11 ÷ 2 = 5, reszta 1
- 5 ÷ 2 = 2, reszta 1
- 2 ÷ 2 = 1, reszta 0
- 1 ÷ 2 = 0, reszta 1
Odczytując reszty od dołu do góry, dostajesz 101101. Żeby sprawdzić, dodaj: 32 + 8 + 4 + 1 = 45.
Jest też metoda alternatywna, którą wiele osób woli: odejmowanie potęg dwójki od największej do najmniejszej. Dla 200: mieści się 128 (zostaje 72), mieści się 64 (zostaje 8), nie mieszczą się 32 i 16, ale mieści się 8 (zostaje 0). Użyte miejsca to 128, 64 i 8, więc 200 = 11001000.
System szesnastkowy: szesnaście cyfr i tabela pod ręką
Ponieważ nie ma cyfr dla liczb od 10 do 15, używa się liter A, B, C, D, E i F. Jedna cyfra szesnastkowa odpowiada dokładnie czterem bitom (jeden «półbajt», czyli nibble), i dlatego system ten jest tak wygodny: bajt, czyli 8 bitów, zapisujesz za pomocą zaledwie dwóch cyfr szesnastkowych.
Aby zamienić liczbę szesnastkową na dziesiętną, pomnóż każdą cyfrę przez potęgę liczby 16 odpowiadającą jej miejscu i dodaj wyniki. Na przykład 3F = 3 × 16 + 15 = 63, a A3 = 10 × 16 + 3 = 163.
| Dziesiętny | Binarny (4 bity) | Ósemkowy | Szesnastkowy |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Dlaczego używa się systemu szesnastkowego: bajty, kolory i adresy
Bajt to 8 bitów i obejmuje zakres od 0 do 255 (od 00000000 do 11111111). Ręczne zapisywanie bitów jest powolne i sprzyja błędom; w systemie szesnastkowym ten sam bajt to dwa znaki, od 00 do FF. Aby zamienić system binarny na szesnastkowy, podziel bity na grupy po cztery od prawej strony i zastąp każdą grupę cyfrą z tabeli. Przykład: 11010111 dzieli się na 1101 i 0111, czyli D i 7, więc wartość to D7. W systemie dziesiętnym to 13 × 16 + 7 = 215.
Najbardziej znany przypadek to kolory w sieci. W #FF8800 są trzy bajty: FF dla czerwieni (255), 88 dla zieleni (136) i 00 dla niebieskiego (0). To intensywny pomarańcz: cała czerwień, nieco ponad połowa zieleni i zero niebieskiego. System szesnastkowy pojawia się także w adresach pamięci, kodach błędów i identyfikatorach sieciowych.
Od tekstu do systemu binarnego przez ASCII
Komputer zapisuje każdą literę jako liczbę, a tę liczbę jako bity. W tabeli ASCII litera A to 65, czyli w 8-bitowym zapisie binarnym 01000001. Słowo «Hi» to dwie litery: H to 72 (01001000), a i to 105 (01101001), więc zapisuje się je jako 01001000 01101001. Dla «Hola» są to 72, 111, 108 i 97, czyli 01001000 01101111 01101100 01100001, a w systemie szesnastkowym 48 6F 6C 61.
Narzędzie używa kodowania UTF-8: dla podstawowych liter angielskich każdy znak zajmuje jeden bajt, czyli 8 bitów, ale litera z ogonkiem, taka jak ą, ł czy ż, albo emoji zajmują kilka bajtów, więc dają więcej niż 8 bitów. Na przykład ł to dwa bajty: 11000101 10000010 (C5 82 w systemie szesnastkowym).
Jak zrobić to wszystko za pomocą narzędzia
Konwerter «Binarny, dziesiętny i hex» pozwala sprawdzić Twoje ręczne obliczenia albo rozwiązać długie liczby bez błędów.
- Wpisz liczbę w polu jej systemu: «Dziesiętny (system 10)», «Binarny (system 2)», ósemkowy albo «Szesnastkowy (system 16)». Pozostałe trzy uzupełnią się same.
- Jeśli cyfra nie pasuje do systemu (na przykład 2 w systemie binarnym), narzędzie Cię o tym poinformuje.
- Dla tekstu wpisz go w polu «Tekst» i zobacz «Binarny (8 bitów na znak)» oraz zapis szesnastkowy po bajtach. Możesz też wkleić bity w grupach po 8, aby wrócić do tekstu.
- Dla nietypowych systemów użyj opcji «Dowolny system (od 2 do 36)»: wybierasz system źródłowy, docelowy i liczbę.
Ograniczenia: narzędzie przelicza tylko liczby całkowite nieujemne (bez części ułamkowej i znaku) i nie dopisuje za Ciebie zer wiodących, więc jeśli chcesz stałych 8 bitów, musisz uzupełnić je ręcznie (13 to 00001101). Nic z tego, co wpisujesz, nie opuszcza Twojej przeglądarki.
Najczęstsze błędy
- Odczytywanie reszt od złej strony: przy kolejnych dzieleniach pierwsza reszta to cyfra położona najbardziej na prawo, a nie najbardziej na lewo.
- Pomijanie zer wiodących, gdy są potrzebne: 13 to 1101, ale jako bajt to 00001101. Ma to znaczenie, gdy długość jest częścią danych, jak w kolorze albo masce sieciowej.
- Mylenie litery O z zerem albo szesnastkowego B (11) z cyfrą 8 przy kopiowaniu. W systemie szesnastkowym litery mają tę samą wartość wielkie i małe, ale to nie to samo co cyfra.
- Zostawianie przedrostka 0x lub znaku # przy przeliczaniu: to tylko oznaczenia, że liczba jest szesnastkowa, i trzeba je usunąć przed wklejeniem.
- Myślenie, że 10 w systemie binarnym to dziesięć: to dwa. To samo «10» oznacza 2, 10 albo 16 w zależności od systemu.
Rozwiązane ćwiczenia do samodzielnej nauki
Spróbuj rozwiązać każde zadanie, zanim spojrzysz na odpowiedź, a potem sprawdź wynik za pomocą narzędzia.
- Zamień 10110110 na system dziesiętny i szesnastkowy. Odpowiedź: 128 + 32 + 16 + 4 + 2 = 182; w grupach po cztery 1011 0110 = B6.
- Zamień 200 na system binarny i szesnastkowy. Odpowiedź: 11001000 i C8 (12 × 16 + 8 = 200).
- Zamień 7F na system binarny. Odpowiedź: 7 = 0111 i F = 1111, więc 01111111, czyli w systemie dziesiętnym 127.
- Zapisz «OK» w systemie binarnym. Odpowiedź: O to 79, a K to 75, czyli 01001111 01001011.
Najczęstsze pytania
Jak zamienić 1101 z systemu binarnego na dziesiętny?
Dodajesz wartości miejsc, na których stoi 1: 8 + 4 + 1 = 13. Druga cyfra od prawej to 0, więc dwójki się nie dodaje.
Ile to jest 255 w systemie binarnym i szesnastkowym?
255 to 11111111 w systemie binarnym i FF w szesnastkowym. To największa wartość mieszcząca się w bajcie złożonym z 8 bitów.
Dlaczego system szesnastkowy używa liter?
Bo potrzebuje szesnastu różnych symboli, a system dziesiętny dostarcza tylko dziesięciu (0–9). Dlatego A to 10, B to 11, C to 12, D to 13, E to 14, a F to 15.
Ile różnych liczb można zapisać na 8 bitach?
256, od 0 do 255. Ogólnie na n bitach można przedstawić 2 do potęgi n wartości.
Czy narzędzie przelicza liczby ujemne lub z częścią ułamkową?
Nie, tylko liczby całkowite nieujemne. Dla tekstu używa UTF-8, więc litery z ogonkami i emoji dają więcej niż 8 bitów.