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.

jeden piksel =trzy bajty:R = 99G = 102B = 2418 × 8 pikseli — z daleka obrazek, z bliska liczby
Obraz rastrowy z bliska: siatka 8 na 8 pikseli tworząca uśmiechniętą buźkę; po powiększeniu widać pojedyncze kwadraty, każdy opisany trzema liczbami RGB. · rys. własny

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

  1. 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.

  1. 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.

  1. 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ą.

Ucz się tej jednostki z asystentem