Informatyka · systemy liczbowe

System binarny — gotowa lekcja i karta pracy z odpowiedziami

Zamiana liczb w obie strony, dodawanie pisemne i bajt 0–255. Karta pracy do druku, klucz i skrypt do sprawdzania.

45 minutPoziom podstawowyPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

37 : 2 = 18 r 1
18 : 2 =  9 r 0
 9 : 2 =  4 r 1
 4 : 2 =  2 r 0
 2 : 2 =  1 r 0
 1 : 2 =  0 r 1
37₁₀ = 100101₂
Reszty czytane od dołu.

Komputer zapisuje liczby, tekst i obrazy za pomocą tylko dwóch cyfr: 0 i 1. Na tej lekcji uczniowie nauczą się zamieniać liczby z systemu dziesiętnego na dwójkowy i z powrotem, dodawać liczby binarne pisemnie i policzyć, ile wartości mieści się w jednym bajcie. Wszystko na kartce — komputer służy tylko do sprawdzenia wyników.

Materiał jest przeznaczony na 45 minut w liceum lub technikum i nie wymaga wcześniejszej wiedzy poza dzieleniem z resztą i potęgami liczby 2. Do sprawdzania wyników dołączamy krótki skrypt w Pythonie; jego użycie jest opcjonalne.

Przygotowanie przed zajęciami

Wydrukuj kartę pracy z sekcji materiałów — po jednej dla każdego ucznia. Klucz odpowiedzi jest w osobnym pliku. Na tablicy przygotuj tabelę wag pozycji, do której będziesz wracać przez całą lekcję:

Pozycja76543210
Waga1286432168421

Jeśli w pracowni jest Python 3, uczniowie mogą na końcu uruchomić sprawdz_binarny.py i porównać swoje obliczenia z wynikiem programu. Kalkulator programisty w systemie operacyjnym też to umożliwia, ale na lekcji ma służyć wyłącznie do kontroli.

Cele i plan lekcji

Po zajęciach uczeń potrafi:

  • wyjaśnić, czym jest system pozycyjny i co oznacza waga pozycji w systemie dwójkowym;
  • zamienić liczbę binarną na dziesiętną, sumując wagi pozycji z cyfrą 1;
  • zamienić liczbę dziesiętną na binarną metodą dzielenia przez 2;
  • dodać pisemnie dwie liczby binarne z przeniesieniem i sprawdzić wynik;
  • wyjaśnić, dlaczego jeden bajt zapisuje 256 różnych wartości.
CzasPraca na lekcji
0–5 minDlaczego 0 i 1? Bit, stan włączony i wyłączony
5–13 minSystem pozycyjny: 345 w dziesiętnym i 1011 w dwójkowym
13–22 minZamiana dziesiętna → dwójkowa przez dzielenie
22–27 minDodawanie pisemne z przeniesieniem
27–40 minTrzy zadania z karty pracy
40–45 minSprawdzenie odpowiedzi i bajt: 0–255

System pozycyjny: od dziesiętnego do dwójkowego

W systemie dziesiętnym liczba 345 oznacza 3 setki, 4 dziesiątki i 5 jedności: 3·100 + 4·10 + 5·1. Każda pozycja jest dziesięć razy „cięższa” od poprzedniej, a cyfr jest dziesięć: od 0 do 9.

System dwójkowy działa tak samo, ale ma tylko cyfry 0 i 1, a wagi pozycji to kolejne potęgi dwójki: 1, 2, 4, 8, 16, 32… Pojedyncza cyfra dwójkowa to bit. Aby nie pomylić systemów, podstawę zapisujemy w indeksie, np. 1011₂ i 11₁₀.

Zamiana dwójkowa → dziesiętna: pod każdą cyfrą zapisz wagę jej pozycji (od prawej: 1, 2, 4, 8…) i dodaj wagi tych pozycji, w których stoi 1.

cyfry:   1   0   1   1
wagi:    8   4   2   1
1011₂ = 8 + 2 + 1 = 11₁₀

Pozycje z zerem pomijamy. Najczęstszy błąd to liczenie wag od lewej strony — waga 1 zawsze należy do cyfry najbardziej po prawej.

Zamiana dziesiętna → dwójkowa: dzielenie przez 2

Dziel liczbę przez 2 i zapisuj resztę (0 albo 1). Wynik dzielenia dziel dalej, aż otrzymasz 0. Liczbę binarną odczytujesz z reszt od dołu do góry.

37 : 2 = 18  reszta 1
18 : 2 =  9  reszta 0
 9 : 2 =  4  reszta 1
 4 : 2 =  2  reszta 0
 2 : 2 =  1  reszta 0
 1 : 2 =  0  reszta 1
37₁₀ = 100101₂   (reszty czytane od dołu)

Sprawdzenie: 100101₂ = 32 + 4 + 1 = 37. Warto wymagać tej kontroli przy każdym zadaniu — zajmuje kilka sekund i od razu wykrywa odczytanie reszt w złej kolejności.

Drugi sposób, przydatny dla małych liczb: odejmuj od liczby największe mieszczące się wagi. Dla 37: największa waga ≤ 37 to 32 (zostaje 5), potem 4 (zostaje 1), potem 1. Jedynki stoją na pozycjach 32, 4 i 1, więc znowu 100101₂.

Dodawanie binarne i bajt

Dodajemy pisemnie jak w systemie dziesiętnym, od prawej, ale „przenosimy” już przy dwójce: 0+0=0, 0+1=1, 1+1=10 (zapisujemy 0 i przenosimy 1), 1+1+1=11 (zapisujemy 1 i przenosimy 1).

  przeniesienia: 1 1 1
          1 0 1 1      (11)
        + 0 1 1 0      ( 6)
        ---------
        1 0 0 0 1      (17)

Wynik ma o jedną cyfrę więcej niż składniki — to normalne, tak jak 70 + 50 = 120 w systemie dziesiętnym.

Osiem bitów tworzy bajt. Najmniejsza wartość bajtu to 00000000₂ = 0, największa 11111111₂ = 255. Razem daje to 256 = 2⁸ różnych wartości. Ogólnie: n bitów zapisuje 2ⁿ wartości, od 0 do 2ⁿ − 1. Dlatego np. składowe koloru w zapisie RGB mają zakres 0–255 — każda zajmuje jeden bajt.

Trzy zadania z karty pracy

Zadanie 1. Z dwójkowego na dziesiętny. Zamień na system dziesiętny: a) 1011₂, b) 11001₂, c) 1000000₂, d) 11111111₂. Przy każdej liczbie zapisz sumę wag.

Zadanie 2. Z dziesiętnego na dwójkowy. Zamień metodą dzielenia przez 2: a) 13, b) 37, c) 100, d) 200. Każdy wynik sprawdź, zamieniając go z powrotem na system dziesiętny.

Zadanie 3. Dodawanie binarne. Dodaj pisemnie i sprawdź wynik w systemie dziesiętnym: a) 1011₂ + 0110₂, b) 1111₂ + 0001₂, c) 10101₂ + 1110₂.

Dla chętnych: ile najmniej bitów potrzeba, aby zapisać liczbę 1000? Uzasadnij odpowiedź potęgami dwójki. Następnie uruchom sprawdz_binarny.py dla liczby 1000 i porównaj liczbę cyfr wyniku ze swoją odpowiedzią.

Klucz odpowiedzi

ZadanieOdpowiedźKontrola
1a118 + 2 + 1
1b2516 + 8 + 1
1c64jedna jedynka na pozycji o wadze 64
1d255128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
2a11018 + 4 + 1 = 13
2b10010132 + 4 + 1 = 37
2c110010064 + 32 + 4 = 100
2d11001000128 + 64 + 8 = 200
3a1000111 + 6 = 17
3b1000015 + 1 = 16
3c10001121 + 14 = 35
Dla chętnych10 bitów2⁹ = 512 < 1000 < 1024 = 2¹⁰

Komentarz do pułapek:

  • W 1c jedna jedynka i sześć zer daje dokładnie potęgę dwójki — dobry przykład, że liczba binarna z jedną jedynką to zawsze potęga 2.
  • W 1d osiem jedynek to największy bajt. Zauważ, że 255 = 256 − 1: dodanie 1 do 11111111₂ dałoby 100000000₂, czyli liczbę dziewięciobitową.
  • W 2c i 2d zera w środku są istotne. Pominięcie reszty 0 przy dzieleniu (np. zapis 11001 zamiast 1100100) to najczęstszy błąd — kontrola przez zamianę odwrotną od razu go wykazuje.
  • W 3b przeniesienie „wędruje” przez wszystkie cztery pozycje. To dokładnie ten sam mechanizm, co 9999 + 1 = 10000 w systemie dziesiętnym.

Typowe błędy

ObjawCo sprawdzić
Wynik zamiany jest „odwrócony”, np. 101001 zamiast 100101Reszty odczytuje się od dołu do góry, od ostatniego dzielenia.
Za mała lub za duża liczba dziesiętnaWagi muszą rosnąć od prawej strony: 1, 2, 4, 8…
Brakuje cyfr w wynikuDzielenie przerwano przed otrzymaniem 0 albo pominięto resztę 0.
W dodawaniu pojawia się cyfra 21 + 1 w systemie dwójkowym to 10: zapisz 0 i przenieś 1.
Wynik różni się od kalkulatoraWykonaj kontrolę wag; kalkulator nie pokazuje, w którym kroku był błąd.

Pytania kontrolne i punktacja

  1. Dlaczego waga pozycji w systemie dwójkowym rośnie dwukrotnie, a w dziesiętnym dziesięciokrotnie?
  2. W jakiej kolejności odczytujemy reszty przy zamianie metodą dzielenia przez 2?
  3. Ile różnych wartości można zapisać na 8 bitach i jaka jest największa z nich?

Odpowiedzi: podstawa systemu określa, ile cyfr jest dostępnych i ile razy rośnie waga każdej kolejnej pozycji — w dwójkowym jest to 2, w dziesiętnym 10. Reszty odczytujemy od dołu, czyli od ostatniego dzielenia do pierwszego. Na 8 bitach mieści się 2⁸ = 256 wartości, od 0 do 255.

Proponowana punktacja (razem 10 punktów): zadanie 1 — po 0,5 pkt za każdą liczbę, razem 2 pkt; zadanie 2 — po 1 pkt za każdą liczbę z kontrolą, razem 4 pkt; zadanie 3 — po 1 pkt za każde dodawanie, razem 3 pkt; odpowiedź na pytanie 3 — 1 pkt. Zadanie dla chętnych nie jest wymagane do kompletu punktów.

Materiały do pobrania

Skrypt sprawdz_binarny.py (Python 3) pyta o liczbę dziesiętną, wypisuje kolejne dzielenia przez 2 z resztami i wynik w systemie dwójkowym, a na końcu porównuje go z wbudowaną funkcją bin. Materiały są dostępne bez logowania. Klucz jest publiczny i służy nauce oraz samodzielnemu sprawdzeniu pracy, nie poufnemu sprawdzianowi.

Co dalej po systemie binarnym?

Naturalną kontynuacją jest system szesnastkowy (kolory w zapisie #1E3A8A w CSS) oraz zapis tekstu w kodach ASCII i Unicode. Skrypt z pakietu używa pętli while — jego budowę wyjaśnia lekcja o pętlach for i while w Pythonie. Reprezentację danych, algorytmikę i programowanie w ramach całej podstawy programowej obejmuje kurs Informatyka w TablicaPro z prezentacjami, ćwiczeniami i testami.

Źródła: funkcje bin i int w dokumentacji Pythona oraz opis systemu dwójkowego w Encyclopaedia Britannica.

Poprowadź kolejne lekcje Informatyka

Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.

Kup dostęp do kursu Informatyka →

Zobacz program kursu