Systemy Liczbowe
Wszystko, co musisz wiedzieć na maturę. Przeliczanie między systemami, schemat Hornera i dzielenie z resztą. To informatyczny pewniak 100%.
Przeliczanie między systemem dwójkowym, dziesiętnym i szesnastkowym pojawia się w arkuszu jako krótkie polecenie, często wplecione w zadanie o czymś zupełnie innym. Kierunki są tylko dwa: z dziesiętnego dzielisz przez bazę i czytasz reszty od dołu, w drugą stronę mnożysz cyfry przez wagi kolejnych pozycji. Opanowanie obu to kwestia jednego wieczoru ćwiczeń — pod warunkiem, że pamiętasz, ile wynosi dwójka do potęgi zerowej. Najpierw uczymy przeliczania pod kreską, rozrysowanego krok po kroku. Potem, skoro komputer jest dostępny przez cały egzamin, pokazujemy wbudowane funkcje Pythona — int() i bin() załatwiają sprawę i są odporne na głupie pomyłki.
- O co chodzi z bazą systemu?
Na co dzień używamy systemu dziesiętnego, ale komputery "myślą" inaczej. W informatyce kluczowa jest podstawa (baza) systemu, oznaczana zazwyczaj jako . To ona definiuje, ilu cyfr możemy użyć do zapisu liczby:
Mała baza (np. p = 2)
Mamy do dyspozycji mało cyfr (tylko 0 i 1). Zapis liczby staje się przez to bardzo długi, ale jest idealny dla elektroniki (jest prąd / nie ma prądu).
Duża baza (np. p = 16) Mamy dużo znaków (cyfry 0-9 oraz litery A-F). Zapis liczby jest bardzo krótki. Świetnie nadaje się do zapisywania np. kolorów w HTML czy adresów w pamięci.
Przykład: Zapis liczby dziesiętnej w BIN
Przykład: Zapis liczby dziesiętnej w HEX
- Trzy Święte Systemy na Maturze
Na egzaminie musisz płynnie przechodzić między tymi trzema systemami. Zwróć uwagę na indeksy dolne!
System Dwójkowy (BIN)
Baza . Dozwolone cyfry: . Podstawa działania każdego procesora.
LUDZKI
System Dziesiętny (DEC)
Baza . Zwykle nie piszemy indeksu dolnego, ale na maturze dla jasności warto to robić.
PAMIĘCIOWY
System Szesnastkowy (HEX)
Baza . Cyfry 10-15 zastępujemy literami: .
- Najważniejsze Algorytmy Przeliczania
DEC ➔ Inny (Dzielenie z resztą)
Dzielimy liczbę przez nową bazę i spisujemy reszty z dzielenia. Wynik czytamy od dołu!
- Dzielenie całkowitoliczbowe ()
- Reszta z dzielenia ()
Inny ➔ DEC (metoda wag pozycyjnych)
Mnożymy każdą cyfrę przez wagę jej pozycji (kolejne potęgi bazy, licząc od prawej strony od zera).
*Tip: Pamiętaj, że cokolwiek do potęgi zerowej (np. ) daje .
Zadania: Zamiana Dziesiętny na Binarny
Zadanie
💡 Pokaż rozwiązanie krok po kroku▼
Sprawdźmy, czy wagi pozycji się zgadzają:
16 + 0 + 4 + 0 + 1 = 21
Zadania: Zamiana Binarny na Dziesiętny
Zadanie
💡 Pokaż rozwiązanie krok po kroku▼
💡 Uwaga na potęgę zerową!
Najczęstszy błąd maturzystów to uznanie, że . Pamiętaj na zawsze: . Skrajna prawa jedynka w systemie binarnym zawsze dodaje do wyniku końcowego (wskazuje, że liczba jest nieparzysta).
Python robi to za Ciebie — ale musisz wiedzieć, co dokładnie
W części praktycznej nikt nie każe ci przeliczać systemów na kartce. Python ma gotowe funkcje, tylko trzeba pamiętać, co zwracają: tekst z przedrostkiem, a nie liczbę. To jedna linijka różnicy między poprawną odpowiedzią a błędem.
# DZIESIETNY -> inny system (wynik to TEKST z przedrostkiem)
bin(200) # '0b11001000'
oct(200) # '0o310'
hex(200) # '0xc8'
bin(200)[2:] # '11001000' - bez przedrostka
format(200, "b") # '11001000'
format(200, "08b") # '11001000' dopelnione zerami do 8 znakow
format(200, "X") # 'C8' wielkimi literami
# inny system -> DZIESIETNY (drugi argument to podstawa)
int("11001000", 2) # 200
int("C8", 16) # 200
int("0b11001000", 0) # 200 - rozpozna przedrostek sambin() zwraca napis — nie da się go dodać do liczby. Po drugie, przedrostek 0b trzeba obciąć, jeśli arkusz prosi o „zapis dwójkowy”. Po trzecie, gdy polecenie mówi „zapisz na ośmiu bitach”, użyj format(x, "08b"), bo samo bin() nie dopisze zer wiodących.Wersja „ręczna”, o którą czasem prosi polecenie
Część zadań brzmi wprost: „napisz algorytm zamiany, nie korzystając z funkcji wbudowanych”. Obie wersje mieszczą się w kilku linijkach i warto mieć je w pamięci.
def na_system(n, p):
"""Dziesietny -> system o podstawie p (2..16)."""
if n == 0:
return "0"
cyfry = "0123456789ABCDEF"
wynik = ""
while n > 0:
wynik = cyfry[n % p] + wynik # reszty czytamy od konca
n //= p
return wynik
def na_dziesietny(tekst, p):
"""System o podstawie p -> dziesietny (schemat Hornera)."""
cyfry = "0123456789ABCDEF"
wynik = 0
for znak in tekst.upper():
wynik = wynik * p + cyfry.index(znak)
return wynikwynik = cyfry[n % p] + wynik: nowa cyfra trafia na początek napisu. To odpowiednik reguły „reszty czytamy od dołu do góry” z części teoretycznej.Operacje bitowe i duże liczby
n << 1 # przesuniecie w lewo = mnozenie przez 2
n >> 1 # przesuniecie w prawo = dzielenie calkowite przez 2
n & 1 # ostatni bit: 1 gdy liczba nieparzysta
n & (n-1) # zeruje najmlodszy ustawiony bit
bin(n).count("1") # ile jedynek w zapisie dwojkowym
len(bin(n)) - 2 # ile bitow zajmuje liczbaZestaw algorytmów wracających w arkuszach, z gotowym kodem i wyjaśnieniem, kiedy który wybrać.
Korepetycje z informatyki
Zdajesz maturę rozszerzoną z informatyki?
Prowadzimy indywidualne przygotowanie do matury z informatyki — algorytmy, Python i C++, bazy danych i arkusz kalkulacyjny. Zajęcia online, na arkuszach CKE. Zobacz program i cennik.
Zobacz korepetycje z informatykiUczysz się w technikum informatycznym? Prowadzimy też przygotowanie do kwalifikacji INF.02, INF.03 i INF.04. Zobacz egzaminy zawodowe →
Nadal czujesz się niepewnie?
To tylko jeden z pewniaków. Na kursie przechodzimy przez nie wszystkie, krok po kroku, aż poczujesz ten spokój.
Pomóżcie mi zdać maturę!