Skip to main content
Binarny
101010

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ń.

  1. IPv4 ma 32 bity: 2³² = 4,29 miliarda adresów
  2. IPv6 ma 128 bitów: 2¹²⁸ ≈ 3,4 × 10³⁸
  3. stosunek to 2¹²⁸ ÷ 2³² = 2⁹⁶
  4. 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ć.