Liceum Klasa I 45 minut PP: I.2a | s. 342

Lekcja 3: Pozycyjne systemy liczbowe - reprezentacja liczb (BIN, OCT, HEX)

System dwojkowy, osemkowy, szesnastkowy - jak komputer przechowuje liczby

📋 Podstawa programowa: I.2a
dwojkowyosemkowyprezentacjesystemy liczboweszesnastkowy
00:00
Wprowadzenie
5 min
00:05
Teoria
18 min
00:23
Cwiczenia
15 min
00:38
Podsumowanie
7 min
📚

Teoria

Czym jest system liczbowy?

System liczbowy to sposob zapisywania liczb za pomoca cyfr. System, ktorego uzywamy na co dzien, to system dziesietny (decymalny, DEC) - uzywa 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

W pozycyjnym systemie liczbowym wartosc cyfry zalezy od jej pozycji w liczbie. Na przyklad w liczbie 352:

  • 3 na pozycji setek = 3 x 100 = 300
  • 5 na pozycji dziesiatek = 5 x 10 = 50
  • 2 na pozycji jednosci = 2 x 1 = 2
  • Razem: 300 + 50 + 2 = 352
Podstawa systemu (baza) okresla, ile roznych cyfr uzywamy. W systemie dziesietnym podstawa to 10, w dwojkowym to 2, w osemkowym to 8, a w szesnastkowym to 16.

System dwojkowy (binarny, BIN) - podstawa 2

Komputery uzywaja systemu dwojkowego, poniewaz ich elementy elektroniczne maja dwa stany: wlaczony (1) i wylaczony (0). Kazda cyfra binarna to jeden bit (binary digit). 8 bitow to 1 bajt.

System binarny uzywa tylko dwoch cyfr: 0 i 1.

Pozycje w systemie binarnym (od prawej):

Pozycja:    7      6      5      4      3     2     1     0
Wartosc:   128    64     32     16      8     4     2     1
            2^7   2^6    2^5    2^4    2^3   2^2   2^1   2^0

Przyklad: 1011 0110 w systemie binarnym:

1x128 + 0x64 + 1x32 + 1x16 + 0x8 + 1x4 + 1x2 + 0x1
= 128 + 0 + 32 + 16 + 0 + 4 + 2 + 0
= 182 (DEC)

System osemkowy (oktalny, OCT) - podstawa 8

System osemkowy uzywa cyfr od 0 do 7. Jest wygodny, poniewaz kazda cyfra osemkowa odpowiada dokladnie 3 bitom.

Pozycje w systemie osemkowym:

Pozycja:    3      2      1      0
Wartosc:   512    64      8      1
            8^3   8^2    8^1    8^0

Przyklad: 275 w systemie osemkowym:

2x64 + 7x8 + 5x1 = 128 + 56 + 5 = 189 (DEC)

System szesnastkowy (heksadecymalny, HEX) - podstawa 16

System szesnastkowy uzywa 16 znakow: 0-9 oraz A=10, B=11, C=12, D=13, E=14, F=15. Kazda cyfra szesnastkowa odpowiada dokladnie 4 bitom. HEX jest powszechnie stosowany w informatyce do zapisu kolorow (#FF0000 = czerwony), adresow pamieci i kodow bledow.

Pozycje w systemie szesnastkowym:

Pozycja:    3        2       1       0
Wartosc:   4096    256      16       1
            16^3   16^2    16^1    16^0

Przyklad: 2A3F w systemie szesnastkowym:

2x4096 + 10x256 + 3x16 + 15x1
= 8192 + 2560 + 48 + 15 = 10815 (DEC)

Tabela porownawcza systemow

  DEC  |   BIN      |  OCT  |  HEX
-------+------------+-------+------
    0  |  0000      |   0   |   0
    1  |  0001      |   1   |   1
    2  |  0010      |   2   |   2
    3  |  0011      |   3   |   3
    4  |  0100      |   4   |   4
    5  |  0101      |   5   |   5
    6  |  0110      |   6   |   6
    7  |  0111      |   7   |   7
    8  |  1000      |  10   |   8
    9  |  1001      |  11   |   9
   10  |  1010      |  12   |   A
   11  |  1011      |  13   |   B
   12  |  1100      |  14   |   C
   13  |  1101      |  15   |   D
   14  |  1110      |  16   |   E
   15  |  1111      |  17   |   F
   16  |  10000     |  20   |  10
  255  |  11111111  | 377   |  FF

Konwersja w Pythonie

Python ma wbudowane funkcje do konwersji miedzy systemami:

# Konwersja DEC na inne systemy
print(bin(42))     # '0b101010'  - binarny
print(oct(42))     # '0o52'     - osemkowy
print(hex(42))     # '0x2a'     - szesnastkowy

# Konwersja z innych systemow na DEC
print(int('101010', 2))   # 42 - z binarnego
print(int('52', 8))       # 42 - z osemkowego
print(int('2a', 16))      # 42 - z szesnastkowego
✏️

Zadania

Latwe

Zadanie 1: Odczytywanie liczb binarnych

Zamien nastepujace liczby binarne na dziesietne:
a) 10102
b) 11002
c) 11112

Pokaz przykladowe rozwiazanie
a) 1010 = 1x8 + 0x4 + 1x2 + 0x1 = 10
b) 1100 = 1x8 + 1x4 + 0x2 + 0x1 = 12
c) 1111 = 1x8 + 1x4 + 1x2 + 1x1 = 15
Latwe

Zadanie 2: Liczby szesnastkowe

Zamien nastepujace liczby szesnastkowe na dziesietne:
a) 1F16
b) A516
c) FF16

Pokaz przykladowe rozwiazanie
a) 1F = 1x16 + 15x1 = 31
b) A5 = 10x16 + 5x1 = 165
c) FF = 15x16 + 15x1 = 255
Srednie

Zadanie 3: Konwersje mieszane

Wykonaj nastepujace konwersje:
a) 4510 na BIN
b) 1101012 na DEC
c) 778 na DEC
d) B816 na DEC

Pokaz przykladowe rozwiazanie
a) 45 / 2 = 22 r 1
   22 / 2 = 11 r 0
   11 / 2 = 5  r 1
   5  / 2 = 2  r 1
   2  / 2 = 1  r 0
   1  / 2 = 0  r 1
   Odczytujemy od dolu: 101101

b) 110101 = 1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 1x1 = 53

c) 77 (OCT) = 7x8 + 7x1 = 63

d) B8 (HEX) = 11x16 + 8x1 = 184
Srednie

Zadanie 4: Kolory w HEX

Kolory na stronach internetowych zapisujemy w formacie #RRGGBB (szesnastkowo). Okresl skladowe RGB (w systemie dziesietnym) dla kolorow:
a) #FF0000
b) #00FF00
c) #0000FF
d) #808080
e) #FFA500

Pokaz przykladowe rozwiazanie
a) #FF0000 -> R=255, G=0, B=0 (czerwony)
b) #00FF00 -> R=0, G=255, B=0 (zielony)
c) #0000FF -> R=0, G=0, B=255 (niebieski)
d) #808080 -> R=128, G=128, B=128 (szary)
e) #FFA500 -> R=255, G=165, B=0 (pomaranczowy)
Trudne

Zadanie 5: Program w Pythonie

Napisz program w Pythonie, ktory pobiera od uzytkownika liczbe dziesietna i wyswietla ja w systemie binarnym, osemkowym i szesnastkowym. Nie uzywaj wbudowanych funkcji bin(), oct(), hex().

Pokaz przykladowe rozwiazanie
def konwertuj(liczba, podstawa):
    if liczba == 0:
        return "0"
    cyfry = "0123456789ABCDEF"
    wynik = ""
    while liczba > 0:
        reszta = liczba % podstawa
        wynik = cyfry[reszta] + wynik
        liczba = liczba // podstawa
    return wynik

n = int(input("Podaj liczbe dziesietna: "))
print(f"Binarnie:       {konwertuj(n, 2)}")
print(f"Osemkowo:       {konwertuj(n, 8)}")
print(f"Szesnastkowo:   {konwertuj(n, 16)}")
🎥

Materialy wideo

Converting numbers - binary, hexadecimal, octal, decimal
Pasja informatyki
przeliczanie liczb dziesiętnych na binarne
ZST Czartajew
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 2: Myslenie komputacyjne Lekcja 4: Zamiana miedzy systemami →