Przejdź do treści

Listopadowa cena: matura z informatyki za 100 zł zamiast 120 zł za lekcję. Zgłoś się do 30.11. Umów bezpłatną konsultację →

ŚredniWaga: 2-4 pkt

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.

  1. 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 pp. 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 1313 w BIN

13 = 8 + 4 + 0 + 1
1
1
0
1
2

Przykład: Zapis liczby dziesiętnej 255255 w HEX

255 = 15×16 + 15×1
F
F
16

  1. Trzy Święte Systemy na Maturze

Na egzaminie musisz płynnie przechodzić między tymi trzema systemami. Zwróć uwagę na indeksy dolne!

MASZYNOWY

System Dwójkowy (BIN)

Baza p=2p = 2. Dozwolone cyfry: {0,1}\{0, 1\}. Podstawa działania każdego procesora.

110121101_2

LUDZKI

System Dziesiętny (DEC)

Baza p=10p = 10. Zwykle nie piszemy indeksu dolnego, ale na maturze dla jasności warto to robić.

131013_{10}

PAMIĘCIOWY

System Szesnastkowy (HEX)

Baza p=16p = 16. Cyfry 10-15 zastępujemy literami: A,B,C,D,E,FA, B, C, D, E, F.

D16D_{16}

  1. 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 (div\text{div})
  • Reszta z dzielenia (mod\text{mod})

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. 202^0) daje 11.

Zadania: Zamiana Dziesiętny na Binarny

Zadanie

Przelicz liczbę dziesiętną na system dwójkowy:
211021_{10}
Zapisz kolejne kroki z dzieleniem modulo.
💡 Pokaż rozwiązanie krok po kroku▼
  • 1

    Krok 1: Dzielimy 21 przez 2

    21:2=1021 : 2 = 10, reszta 11.

  • 2
    Krok 2: Kontynuujemy dzielenie wyników
    10:2=5r. 010 : 2 = 5 \quad \text{r. } 05:2=2r. 15 : 2 = 2 \quad \text{r. } 12:2=1r. 02 : 2 = 1 \quad \text{r. } 01:2=0r. 11 : 2 = 0 \quad \text{r. } 1
  • 3

    Krok 3: Czytamy reszty od dołu!

    Zapisujemy wszystkie zebrane reszty od ostatniej (na samym dole) do pierwszej (na samej górze).
  • 4
    Krok 4: Wynik końcowy
    2110=10101221_{10} = 10101_2

Sprawdźmy, czy wagi pozycji się zgadzają:

2⁴=16
1
2³=8
0
2²=4
1
2¹=2
0
2⁰=1
1

16 + 0 + 4 + 0 + 1 = 21

Zadania: Zamiana Binarny na Dziesiętny

Zadanie

Przelicz liczbę dwójkową na system dziesiętny:
110121101_2
💡 Pokaż rozwiązanie krok po kroku▼
  • 1

    Krok 1: Podpisz wagi (potęgi dwójki) nad cyframi

    Idziemy od prawej strony, zaczynając od indeksu 0!
    Cyfry: 1101\quad 1 \quad 1 \quad 0 \quad 1
    Potęgi: 23222120\quad 2^3 \quad 2^2 \quad 2^1 \quad 2^0
  • 2
    Krok 2: Wymnóż cyfry przez ich wagi
    1⋅23+1⋅22+0⋅21+1⋅201 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0
  • 3
    Krok 3: Dodaj wyniki
    =1⋅8+1⋅4+0⋅2+1⋅1= 1 \cdot 8 + 1 \cdot 4 + 0 \cdot 2 + 1 \cdot 1
    =8+4+0+1=13= 8 + 4 + 0 + 1 = 13
    Odpowiedź: 11012=13101101_2 = 13_{10}.

💡 Uwaga na potęgę zerową!

Najczęstszy błąd maturzystów to uznanie, że 20=02^0 = 0. Pamiętaj na zawsze: 20=12^0 = 1. Skrajna prawa jedynka w systemie binarnym zawsze dodaje 11 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 sam
Trzy pułapki. Po pierwsze, bin() 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 wynik
Druga funkcja to schemat Hornera: zamiast liczyć potęgi podstawy, mnożysz dotychczasowy wynik przez podstawę i dodajesz kolejną cyfrę. Wymaga to nn mnożeń zamiast nn potęgowań, więc jest szybsze — a pytanie „dlaczego ta wersja jest efektywniejsza” pada w arkuszach regularnie.
Zwróć uwagę na wynik = 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 liczba
Python nie ma ograniczenia rozmiaru liczb całkowitych. Silnia z dwustu, potęga 210002^{1000} czy suma cyfr ogromnej liczby liczą się bez żadnych sztuczek — podczas gdy w C++ trzeba by pisać własną arytmetykę na napisach. To realna przewaga przy wyborze języka na egzaminie i warto o tym pamiętać, czytając polecenie o „bardzo dużych liczbach”.
Ograniczenie dotyczy tylko liczb rzeczywistych: tam nadal obowiązuje skończona precyzja, więc porównań przez równość unikamy tak samo jak wszędzie.
Przeczytaj też
Algorytmy, które realnie przydają się na maturze

Zestaw 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 informatyki

Uczysz 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ę!