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ę:
| Pozycja | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Waga | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
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.
| Czas | Praca na lekcji |
|---|---|
| 0–5 min | Dlaczego 0 i 1? Bit, stan włączony i wyłączony |
| 5–13 min | System pozycyjny: 345 w dziesiętnym i 1011 w dwójkowym |
| 13–22 min | Zamiana dziesiętna → dwójkowa przez dzielenie |
| 22–27 min | Dodawanie pisemne z przeniesieniem |
| 27–40 min | Trzy zadania z karty pracy |
| 40–45 min | Sprawdzenie 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
| Zadanie | Odpowiedź | Kontrola |
|---|---|---|
| 1a | 11 | 8 + 2 + 1 |
| 1b | 25 | 16 + 8 + 1 |
| 1c | 64 | jedna jedynka na pozycji o wadze 64 |
| 1d | 255 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 |
| 2a | 1101 | 8 + 4 + 1 = 13 |
| 2b | 100101 | 32 + 4 + 1 = 37 |
| 2c | 1100100 | 64 + 32 + 4 = 100 |
| 2d | 11001000 | 128 + 64 + 8 = 200 |
| 3a | 10001 | 11 + 6 = 17 |
| 3b | 10000 | 15 + 1 = 16 |
| 3c | 100011 | 21 + 14 = 35 |
| Dla chętnych | 10 bitów | 2⁹ = 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
| Objaw | Co sprawdzić |
|---|---|
| Wynik zamiany jest „odwrócony”, np. 101001 zamiast 100101 | Reszty odczytuje się od dołu do góry, od ostatniego dzielenia. |
| Za mała lub za duża liczba dziesiętna | Wagi muszą rosnąć od prawej strony: 1, 2, 4, 8… |
| Brakuje cyfr w wyniku | Dzielenie przerwano przed otrzymaniem 0 albo pominięto resztę 0. |
| W dodawaniu pojawia się cyfra 2 | 1 + 1 w systemie dwójkowym to 10: zapisz 0 i przenieś 1. |
| Wynik różni się od kalkulatora | Wykonaj kontrolę wag; kalkulator nie pokazuje, w którym kroku był błąd. |
Pytania kontrolne i punktacja
- Dlaczego waga pozycji w systemie dwójkowym rośnie dwukrotnie, a w dziesiętnym dziesięciokrotnie?
- W jakiej kolejności odczytujemy reszty przy zamianie metodą dzielenia przez 2?
- 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
- Pakiet: karta pracy, klucz odpowiedzi i skrypt do sprawdzania
- Karta pracy ucznia — otwórz i wydrukuj
- Klucz odpowiedzi dla nauczyciela
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 →