Informatyka · klasa 1 · rozszerzenie · lekcja 2

Pozycyjne reprezentacje liczb

Czyli po co komu szesnastkowy

Pojęcia

System pozycyjny — wartość cyfry zależy od jej pozycji. W zapisie o bazie b pozycje od prawej mają wagi b⁰ = 1, b¹ = b, b² = b·b, b³ = b·b·b… Wartość liczby to suma iloczynów cyfra × waga pozycji. Tę jedną metodę stosuje się do każdej bazy.
Baza (podstawa) — ile różnych cyfr ma system. Baza 10 → cyfry 0–9. Baza 2 → 0 i 1. Baza 8 → 0–7. Baza 16 → 0–9 oraz A, B, C, D, E, F (bo po dziewiątce zabrakło cyfr): A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Zapis bazy — 1011₂ albo 0b1011 · 755₈ albo 0o755 · 2F₁₆ albo 0x2F albo #2F.

Dlaczego 16 i 8, a nie 12 czy 20

Bo 16 = 2⁴ i 8 = 2³. Jedna cyfra szesnastkowa to dokładnie cztery bity, jedna cyfra ósemkowa to dokładnie trzy bity. Zamiana nie wymaga żadnego rachunku — wystarczy pociąć zapis binarny na kawałki i odczytać każdy osobno. Dwunastkowy takiej własności nie ma, więc nigdzie się nie przyjął.

bin → hex: tnij po cztery bity od prawej, każdą czwórkę zamień na cyfrę hex.
bin → oct: tnij po trzy bity od prawej. W drugą stronę tak samo, tylko odwrotnie — każdą cyfrę hex rozpisz na cztery bity, każdą cyfrę oct na trzy.

bityhexbityhexbityhexbityhex
0000001004100081100C
0001101015100191101D
00102011061010A1110E
00113011171011B1111F
chmod (uprawnienia w Linuksie) — trzy cyfry ósemkowe, po jednej dla właściciela, grupy i reszty świata. Każda cyfra to trzy bity, a każdy bit to jedno prawo: r = czytaj (4) · w = pisz (2) · x = wykonuj (1). Czyli 7 = 111 = rwx, 5 = 101 = r-x, 6 = 110 = rw-, 0 = 000 = ---.
Kolor w CSS / HTML — #RRGGBB, trzy pary cyfr szesnastkowych: czerwony, zielony, niebieski. Każda para to jeden bajt, czyli wartość od 00 = 0 do FF = 255.
Ta karta jest samowystarczalna. Wszystko, czego potrzebujesz do zadań, jest wyżej — tabelę czwórek bitów masz pod ręką, nie musisz jej liczyć w pamięci.

Zadania

Zadanie 1

Jedna metoda, cztery bazy

na lekcji

Rozpisz każdą liczbę przez wagi pozycji i podaj wynik dziesiętnie.

Wzór: 2503₁₀ = 2·1000 + 5·100 + 0·10 + 3·1 = ………

  1. 2503₁₀ = =
  2. 1011₂ = =
  3. 2F₁₆ = =
  4. 755₈ = =

Co było wspólne we wszystkich czterech rachunkach?

Zadanie 2

bin ↔ hex przez czwórki

na lekcji

Tnij po cztery bity od prawej. Bez dzielenia, bez kalkulatora.

  1. 11010110 → …… │ …… → hex 0x (dziesiętnie: )
  2. 10101111 → …… │ …… → hex 0x (dziesiętnie: )
  3. 0x3C → bin (dziesiętnie: )
  4. 0xFF → bin (dziesiętnie: )

Zapamiętaj wynik z podpunktu b — wróci w zadaniu 4.

Zadanie 3

chmod

na lekcji

Zdekoduj (cyfra → trzy bity → prawa):

zapis ósemkowytrzy razy po trzy bityprawa
a644  
b777  
c700  

d) Zakoduj: właściciel może wszystko, grupa i reszta nic →

e) Który z zapisów 644 i 700 ustawisz na pliku z hasłami? Dlaczego?

Zadanie 4

Kolor

na lekcji

Kolor #1e40af to granat z dzisiejszej prezentacji.

a) Rozłóż na składowe i zamień na dziesiętne:
1e → R = · 40 → G = · af → B =

b) W drugą stronę: kolor o składowych R = 255, G = 0, B = 0 zapiszesz jako #

c) Pytanie-pułapka. Który kolor jest jaśniejszy: #00FF00 czy #0000FF? Obie liczby mają tę samą wartość — FF = 255. Odpowiedź i uzasadnienie:

d) Wróć do zadania 2b. Co zauważasz?

Zadanie 5

Thonny

na lekcji

Otwórz Thonny i wpisz w Shellu kolejno sześć linii — po każdej wciśnij Enter i przeczytaj wynik:

bin(200)
hex(255)
oct(493)
int('1101', 2)
int('ff', 16)
0xff + 1

Zapisz, co wypisał Python:

wpisujeszPython wypisuje
bin(200) 
hex(255) 
oct(493) 
int('1101', 2) 
int('ff', 16) 
0xff + 1 

a) Teraz wpisz int('ff') — bez drugiego argumentu. Co się stało?

b) Dlaczego int('ff') się wywala, a int('ff', 16) nie?

c) Skąd znasz liczbę 493 z trzeciej linijki?

Czerwony tekst w Shellu to nie awaria. To zdanie po angielsku, które mówi, co poszło nie tak. Przeczytaj je, zanim zawołasz nauczyciela — nazwa błędu stoi na początku ostatniej linijki.
Zadanie 6

Znajdź hex na wolności

do domu

Wyszukaj trzy szesnastkowe liczby poza szkołą i zapisz, co znaczą:

a) kod błędu — w systemie, w grze albo w komunikacie aplikacji (np. 0x80070005):

b) adres MAC swojego telefonu — Wi-Fi → nazwa sieci → informacje o sieci / o urządzeniu. Ile ma cyfr szesnastkowych i ile to bajtów?

c) kolor w CSS — otwórz dowolną stronę, Ctrl+Shift+I → zakładka ze stylami; przepisz jeden kolor #RRGGBB i policz jego składowe dziesiętnie:

← Powrót do materiałów