Przewodnik po systemie dwójkowym
System binarny (dwójkowy)
System binarny używa tylko dwóch cyfr: 0 i 1. Jest to podstawowy język komputerów, gdzie 0 oznacza brak prądu (wyłączony), a 1 obecność prądu (włączony). Liczby binarne są dłuższe od dziesiętnych, ale łatwiejsze do implementacji w elektronice cyfrowej. Bajt to 8 bitów (np. 10101010₂ = 170₁₀).
Przeliczanie na system binarny
Aby zamienić liczbę dziesiętną na binarną, dziel ją przez 2 i zapisuj reszty. Np. 42 ÷ 2 = 21 reszta 0, 21 ÷ 2 = 10 reszta 1, 10 ÷ 2 = 5 reszta 0, 5 ÷ 2 = 2 reszta 1, 2 ÷ 2 = 1 reszta 0, 1 ÷ 2 = 0 reszta 1. Czytając od dołu: 101010₂ = 42₁₀.
Zastosowania w programowaniu
Binarnie używane w maskach bitowych, uprawnieniach plików (np. chmod 755 = 111101101), adresach IP (IPv4), kolorach RGB (czerwień #FF0000 = 11111111 00000000 00000000). Pamięć RAM adresowana bitami. Boolean: true=1, false=0.
IPv6 nie jest cztery razy większy od IPv4. Jest 2⁹⁶ razy większy
Liczby bitów to wykładniki, a wykładniki pokonują intuicję. Adres IPv6 ma cztery razy więcej bitów niż adres IPv4, co brzmi jak czterokrotna pojemność. W rzeczywistości to około 79 oktylionów razy więcej, bo każdy pojedynczy dodatkowy bit podwaja zakres.
Jak to działa
- Przelicza między systemem dwójkowym, dziesiętnym, szesnastkowym i ósemkowym.
- Pokazuje, ile odrębnych wartości może reprezentować dana liczba bitów.
- Uwidacznia podwajanie — część, która najbardziej opiera się zgadywaniu.
wartości = 2^bity 8 bitów → 256 jeden bajt, 0–255 16 bitów → 65 536 numer portu 32 bity → 4 294 967 296 adres IPv4 64 bity → 1,8 × 10¹⁹ znaczniki czasu w nanosekundach jeden dodatkowy bit zawsze podwaja zakres
Przykład z liczbami
Porównanie przestrzeni adresowych i źródło znanych ograniczeń.
- IPv4 ma 32 bity: 2³² = 4,29 miliarda adresów
- IPv6 ma 128 bitów: 2¹²⁸ ≈ 3,4 × 10³⁸
- stosunek to 2¹²⁸ ÷ 2³² = 2⁹⁶
- 2⁹⁶ ≈ 7,9 × 10²⁸ — a nie 4
Czterokrotnie więcej bitów to 2⁹⁶ razy więcej adresów. Ta sama arytmetyka tłumaczy, dlaczego 255 jest wszędzie: osiem bitów daje 256 wartości, numerowanych od 0 do 255.
Jak czytać wynik
- System szesnastkowy istnieje, bo jest zwięzłym zapisem dwójkowym. Jedna cyfra szesnastkowa to dokładnie cztery bity, więc dwie cyfry to jeden bajt — dlatego kolory zapisuje się jako #RRGGBB, a 0xFF to 255, czyli 11111111.
- System ósemkowy to trzy bity na cyfrę — dlatego uprawnienia plików w Uniksie są trójkami: 755 to trzy grupy flag odczytu, zapisu i wykonania upakowane po jednej cyfrze.
- Wyczerpanie IPv4 dało się przewidzieć z samego wykładnika. 32 bity ograniczają internet do 4,29 miliarda adresów niezależnie od sposobu przydziału, a ten sufit był widoczny dekady przed jego osiągnięciem.
- Liczby ze znakiem oddają jeden bit na znak, o połowę zmniejszając zakres dodatni. Wartość 32-bitowa ze znakiem kończy się na 2 147 483 647, a nie 4 294 967 295 — to źródło bardzo wielu błędów przepełnienia.
Częste pytania
- Dlaczego jeden bajt mieści 0 do 255, a nie 1 do 256?
- Bo liczenie zaczyna się od zera. Osiem bitów daje 2⁸ = 256 odrębnych wzorców, a pierwszy z nich reprezentuje zero, więc ostatni reprezentuje 255. Liczba wartości to 256; maksimum to 255.
- Po co szesnastkowy zamiast wprost dwójkowego?
- Zwięzłość bez straty. Każda cyfra szesnastkowa odpowiada dokładnie czterem bitom, więc bajt to zawsze dwa znaki, a konwersja jest mechaniczna. Zapis 11111111 zamiast FF jest cztery razy dłuższy i znacznie łatwiej się w nim pomylić.