Znaki, obrazy, dźwięk
🎯 Po co Ci to?
Wyślij koledze wiadomość „Zażółć gęślą jaźń", zrób zdjęcie i nagraj głosówkę. Właśnie wyprodukowałeś trzy strumienie bitów — i w każdym z nich świat został zamieniony w liczby według innej umowy. Znasz już zasadę (wszystko jest bitami); dziś poznasz same umowy. To one decydują, czemu stare SMS-y „gubiły ogonki", ile naprawdę waży zdjęcie i co znaczy „jakość studyjna" w reklamie słuchawek.
✅ Czego się nauczysz
Po tej jednostce potrafisz:
- wyjaśnić, jak koduje się znaki (od ASCII do Unicode) i skąd się brały „krzaczki" zamiast polskich liter;
- opisać obraz rastrowy: piksele, głębię koloru, rozdzielczość — i policzyć rozmiar bitmapy;
- wyjaśnić cyfryzację dźwięku: próbkowanie i kwantyzację — oraz rolę parametrów zapisu.
📘 Wyjaśnienie
Znaki. Litera to dla komputera liczba — trzeba się tylko umówić która. Pierwsza wielka umowa, ASCII (1963), przydzieliła numery 0–127: wielkie i małe litery angielskie, cyfry, znaki przestankowe ($A = 65$, $a = 97$, spacja $= 32$). Na siedmiu bitach nie zmieściło się nic ponadto — ani „ż", ani „é", ani „ß". Przez dekady każdy kraj dopychał swoje znaki w numerach 128–255 po swojemu, więc tekst wysłany z polskiego komputera na niemiecki zmieniał „ż" w inną literę — stąd legendarne „krzaczki". Porządek zrobił dopiero Unicode: jeden wielki spis, w którym każdy znak każdego pisma świata (plus emoji) ma unikatowy numer, a najpopularniejszy sposób zapisu tych numerów bitami, UTF-8, sprytnie używa 1 bajta dla znaków ASCII i 2–4 bajtów dla pozostałych. „Zażółć" zajmuje w UTF-8 więcej bajtów niż liter — policz w zadaniu 1.
Obraz. Ekran i matryca aparatu dzielą obraz na siatkę punktów — pikseli. Każdy piksel to (znane z 2.2!) trzy bajty: R, G, B. Obraz zapisany wprost jako tablica pikseli to bitmapa (grafika rastrowa). Jej rozmiar policzy każdy, kto umie mnożyć:
$$\text{rozmiar} = \text{szerokość} \times \text{wysokość} \times \text{bajty na piksel}$$
Zdjęcie 4000 × 3000 pikseli po 3 bajty = 36 000 000 bajtów, około 36 MB. A pliki z telefonu mają po 3–4 MB… Ktoś tu ściska — o tym w jednostce 2.6.
Do bitmapy wrócimy jeszcze w dziale o grafice — tam poznasz jej konkurentkę, grafikę wektorową, która zamiast pikseli zapisuje przepis na rysunek (i dlatego skaluje się bez strat).
Dźwięk. Dźwięk to falowanie ciśnienia — wielkość ciągła, a bity są ziarniste. Cyfryzacja tnie falę na dwa sposoby naraz. Próbkowanie: mierzymy wysokość fali w równych odstępach czasu — na płycie CD 44 100 razy na sekundę. Kwantyzacja: każdy pomiar zaokrąglamy do najbliższego z dostępnych poziomów — na CD poziomów jest $2^{16} = 65,536$ (16 bitów na próbkę). Częstsze próbkowanie = wierniej oddane wysokie tony; więcej bitów na próbkę = subtelniejsze różnice głośności. Sekunda stereo z płyty CD to $44,100 \times 2 \text{ bajty} \times 2 \text{ kanały} \approx 176$ kB — znów dużo, i znów z odsieczą przyjdzie kompresja. A animacja? Nic nowego: to po prostu obrazy pokazywane szybko (film ~24–60 klatek na sekundę) — reprezentacja złożona z reprezentacji.
💭 Pomyśl: Dlaczego 44 100 próbek na sekundę, a nie na przykład 10 000? Podpowiedź: ludzkie ucho słyszy drgania do ~20 000 Hz.
Sprawdź odpowiedź
Żeby odtworzyć falę o danej częstotliwości, trzeba ją próbkować ponad dwa razy częściej (inaczej próbki „nie nadążają" i fala 15 kHz udaje po odtworzeniu jakąś niższą — zniekształcenie nie do naprawienia). Skoro słyszymy do 20 kHz, potrzeba ponad 40 000 próbek/s; 44 100 dodaje margines techniczny. Przy 10 000 próbek/s straciłbyś wszystko powyżej 5 kHz — mowa byłaby zrozumiała, ale talerze perkusji i blask brzmienia znikną.
🤯 Ciekawostka
W numerach ASCII kryje się elegancki trik: wielkie „A" to 65, małe „a" to 97 — różnica dokładnie 32, czyli jeden bit. Zamiana wielkich liter na małe w całym tekście to dla komputera ustawienie jednego bitu w każdym bajcie. Projektanci z 1963 roku myśleli o algorytmach, które przyjdą po nich — i to jest definicja dobrej inżynierii.
🛠️ Teraz Ty
Bez komputera: policz, ile bajtów zajmuje niezapisany „oszczędnie" obraz Full HD (1920 × 1080, 3 bajty na piksel) i minuta dźwięku jakości CD stereo. Z komputerem: w Pythonie ord('A'), ord('ż') pokażą numery znaków, a 'ż'.encode('utf-8') — z ilu bajtów składa się „ż".
📐 Definicje tej lekcji
- ASCII / Unicode / UTF-8 — historyczna 7-bitowa tablica znaków / światowy spis wszystkich znaków / oszczędny sposób zapisu numerów Unicode bajtami.
- Piksel, głębia koloru, bitmapa — punkt obrazu; liczba bitów na kolor punktu; obraz jako tablica pikseli.
- Próbkowanie i kwantyzacja — pomiar fali w regularnych odstępach czasu; zaokrąglanie pomiarów do skończonej liczby poziomów.
📌 Najważniejsze w pigułce
- Tekst, obraz i dźwięk różnią się tylko umową kodowania — pod spodem zawsze są bajty.
- Rozmiar bitmapy = szerokość × wysokość × bajty na piksel; sekunda CD ≈ 176 kB — surowe media są ogromne.
- Próbkowanie łapie czas, kwantyzacja — wartość; oba wprowadzają nieuniknione, kontrolowane przybliżenie.
🎒 Zadania
- Ile bajtów zajmuje w UTF-8 słowo „Zażółć"? (ASCII: 1 bajt/znak; polskie znaki diakrytyczne: 2 bajty.)
Wskazówka i odpowiedź
Z-a-ż-ó-ł-ć: dwa znaki ASCII (Z, a) po 1 bajcie + cztery polskie (ż, ó, ł, ć) po 2 bajty = $2 + 8 = 10$ bajtów na 6 liter. Właśnie dlatego limit 160 znaków SMS-a potrafił po polsku skurczyć się do 70 — zapis znaków spoza podstawowej tablicy kosztuje.
- Aparat reklamowany jako „48 megapikseli" robi zdjęcia 8000 × 6000. Sprawdź marketing rachunkiem i policz rozmiar surowego zdjęcia przy 3 bajtach na piksel.
Wskazówka i odpowiedź
$8000 \times 6000 = 48,000,000$ pikseli — 48 Mpx się zgadza. Surowo: $48 \cdot 10^6 \times 3 = 144$ MB na jedno zdjęcie. Telefon z 128 GB pomieściłby ich „na surowo" niecałe 900 — a mieści dziesiątki tysięcy. Różnicę robi kompresja z następnej jednostki.
- Nagranie mowy do rozpoznawania komend głosowych próbkuje się zwykle 16 000 razy na sekundę, 2 bajty na próbkę, jeden kanał. Policz rozmiar 10 sekund nagrania i wyjaśnij, czemu nie używa się tu jakości CD.
Wskazówka i odpowiedź
$16,000 \times 2 \times 10 = 320,000$ bajtów ≈ 0,3 MB. Mowa mieści się w paśmie do ~8 kHz, więc (reguła „ponad dwa razy") 16 kHz próbkowania wystarcza; jakość CD niosłaby niemal trzykrotnie więcej danych bez zysku dla rozpoznawania. Dobór parametrów reprezentacji do celu — nie „im więcej, tym lepiej" — to znak rozpoznawczy inżyniera.
🔍 Sprawdź, czy umiesz
- Opowiedzieć historię „krzaczków" i wyjaśnić, co naprawiły Unicode i UTF-8.
- Policzyć rozmiar dowolnej bitmapy i dowolnego surowego nagrania.
- Wyjaśnić różnicę między próbkowaniem a kwantyzacją jednym zdaniem każdą.