Rozdział 4 · Python lubi liczby

Jak zapisywać liczby: systemy liczbowe

System dziesiętny nie jest jedynym. Przyjrzyjmy się notacjom binarnym, ósemkowym i szesnastkowym oraz dlaczego programista w ogóle ich potrzebuje.

Jesteśmy przyzwyczajeni do zapisywania liczb w dziesiętnym system (base 10) — dziesięć cyfry, od 0 do 9. Ale to nie jedyny sposób, a komputery często korzystają z innych Systemy liczbowe.

Cztery systemy, które napotkasz

SystemFundacjaLiczbyPython-literal
Dziesiętna (decimal)100–910
Binarność (binary)20–10b1010
Oktalny (octal)80–70o12
Szesnastkowy (hexadecimal)160–9, A–F0xA
100b10100o120xAto samoliczba
Cztery zgłoszenia, ten sam wynik

Jak czytać notację pozycyjną

W każdym systemie liczbowym każda pozycja cyfry ma swoją „wagę” — potęgę podstawy. Weźmy liczbę binarną 1010:

1
×8
0
×4
1
×2
0
×1
+
+
+
= 10
1010₂ = 1×8 + 0×4 + 1×2 + 0×1 = 10

Dokładnie ta sama zasada działa również dla systemu dziesiętnego, którego używasz codziennie — po prostu wagi pozycji tam są 1000, 100, 10, 1 (moc dziesiątki), a nie potęgi dwójki.

Dlaczego programiście potrzebny jest system szesnastkowy

Zapis szesnastkowy spotyka się w praktyce znacznie częściej, niż się wydaje:

cvet.py
red = 0xFF
print(red)  # 255

Funkcje bin(), oct(), hex()

Przekonwertować liczbę Z notacji dziesiętnej na łańcuch znaków o innym systemie liczbowym:

v_druguyu_sistemu.py
print(bin(10))  # '0b1010'
print(oct(10))  # '0o12'
print(hex(10))  # '0xa'

int() z oznaczeniem podstawy – transformacja odwrotna

Funkcja int() dwoma argumentami robi odwrotnie — odczytuje tekst w określonym układzie liczbowym i zwraca regularną (dziesiętną) liczbę:

iz_teksta.py
print(int("1010", 2))  # 10
print(int("FF", 16))   # 255
Spróbujmy
Przekonwertuj swój rok urodzenia na notację binarną i szesnastkową za pomocą bin() oraz hex() — a następnie przetłumaczyć wynik z powrotem int(..., 2) oraz int(..., 16)upewnić się, że dostaniesz ten sam numer.
Praktyka: tłumacz systemów liczbowych
Interaktywny laptop bezpośrednio w Twojej przeglądarce – bin(), oct(), hex(), int(x, base)
Otwórz praktykę →