🧬 Reprezentace dat: text, obraz, zvuk

Domluvené kódy

O čem to je

Počítač umí uložit jen nuly a jedničky. Přesto v něm máš zprávy od kamarádů, fotky z dovolené i oblíbené písničky. Jde to proto, že se lidé domluvili, co která řada bitů znamená – podobně jako Morseova abeceda domlouvá, co znamená tečka a čárka.

Když znáš tyto domluvy, umíš spočítat, kolik místa zabere fotka nebo nahrávka, a víš, proč se v e-mailu někdy místo „č“ objeví divné znaky.

Nové pojmy

Bit a bajtPřipomenutí: bit je jedna dvojková číslice (0 nebo 1), bajt je 8 bitů a uloží 256 různých hodnot (0–255).Číslo 65 je v jednom bajtu 0100 0001.
KódováníDomluvená tabulka, která každé informaci (písmenu, barvě, výšce zvuku) přiřadí číslo, a tím i řadu bitů.V tabulce ASCII má velké „A“ číslo 65.

Text: každé písmeno má číslo

ASCIINejstarší rozšířené kódování znaků. Používá 7 bitů, tedy 128 znaků: anglická písmena, číslice, interpunkci a řídicí znaky (např. nový řádek). Česká písmena s diakritikou v něm nejsou.„A“ = 65, „a“ = 97, „0“ = 48, mezera = 32.
Unicode a UTF-8Unicode je jedna velká tabulka, která dává číslo všem znakům světa včetně češtiny a emoji. UTF-8 je nejběžnější způsob, jak tato čísla uložit do bajtů: znaky z ASCII zaberou 1 bajt, česká písmena s háčkem či čárkou 2 bajty, jiné znaky 3 nebo 4 bajty.„a“ = 1 B, „č“ = 2 B, „€“ = 3 B, emoji 😀 = 4 B.

Dřív se pro češtinu používaly jiné tabulky, například Windows-1250 nebo ISO 8859-2. Když text uložíš v jedné tabulce a otevřeš ho ve druhé, písmena s diakritikou se změní na nesmysly.

Kolik bajtů zabere slovo „Škola“ v kódování UTF-8?
„Š“ je česká hláska s háčkem → 2 B. „k“, „o“, „l“, „a“ jsou z ASCII → 4 · 1 B = 4 B. Celkem 2 + 4 = 6 B.

Obraz: mozaika z bodů

PixelJeden barevný bod obrázku. Rastrový obrázek je mřížka pixelů, jako mozaika z kachliček.Obrázek 1920 × 1080 má 1920 pixelů na šířku a 1080 na výšku.
RGB a barevná hloubkaBarvu pixelu skládáme ze tří světel: červené (R), zelené (G) a modré (B). Každé má obvykle 8 bitů, tedy 256 úrovní jasu. Barevná hloubka je počet bitů na pixel; 3 · 8 = 24 bitů dá 256³ = 16 777 216 barev.Čistá červená je R = 255, G = 0, B = 0, šestnáctkově #FF0000.
Rastrová a vektorová grafikaRastrová ukládá každý pixel (fotky; formáty JPEG, PNG). Vektorová ukládá tvary jako matematický popis – čáry, křivky, výplně (loga, plány; formát SVG). Vektor jde zvětšit bez rozmazání.Logo školy na plakát se hodí ve vektoru, fotka třídy v rastru.
Kolik bajtů zabere nekomprimovaný obrázek 1920 × 1080 pixelů s barevnou hloubkou 24 bitů?
Pixelů: 1920 · 1080 = 2 073 600. Každý má 24 b = 3 B. Celkem 2 073 600 · 3 = 6 220 800 B, tedy asi 6,2 MB.

Zvuk: fotky vlny

VzorkováníZvuk je vlnění vzduchu. Mikrofon ho promění na plynule se měnící napětí. Počítač toto napětí mnohokrát za sekundu změří a uloží jako číslo. Jednomu měření se říká vzorek, počtu vzorků za sekundu vzorkovací frekvence (Hz).Hudební CD má 44 100 vzorků za sekundu, tedy 44,1 kHz.
Bitová hloubka zvukuKolik bitů má každý vzorek. Čím víc bitů, tím jemněji se dá hlasitost zachytit.16 bitů = 2¹⁶ = 65 536 úrovní (CD kvalita).

Vzorkovací frekvence musí být aspoň dvakrát vyšší než nejvyšší tón, který chceme zachytit. Člověk slyší zhruba do 20 kHz, proto CD vzorkuje 44,1 kHz.

Kolik bajtů zabere 1 minuta nekomprimovaného stereo zvuku v kvalitě CD (44,1 kHz, 16 bitů, 2 kanály)?
Za sekundu: 44 100 · 16 · 2 = 1 411 200 bitů. Za minutu: 1 411 200 · 60 = 84 672 000 bitů. Na bajty: 84 672 000 : 8 = 10 584 000 B, asi 10,6 MB.

Proč jsou soubory menší: komprese

KompreseZmenšení souboru. Bezeztrátová zachová všechna data přesně (ZIP, PNG, FLAC). Ztrátová zahodí detaily, které člověk skoro nepozná, a ušetří víc místa (JPEG, MP3, AAC).Fotka 6 MB se jako JPEG zmenší třeba na 1 MB.

Roztřiď formáty. Nápověda: u programu nebo dokumentu si nemůžeš dovolit ztratit ani jeden bit.

✗Když fotku uložím z JPEG do PNG, vrátí se jí ztracená kvalita.
✓Co ztrátová komprese jednou zahodila, už se nevrátí. PNG jen dál uchová to, co zbylo.

Ztrátová komprese data nenávratně mění. Proto se originály a rozpracované obrázky ukládají bezeztrátově.

Text, obraz i zvuk jsou čísla podle domluveného kódování. Text: ASCII a UTF-8. Obraz: pixely, RGB 24 bitů. Zvuk: vzorkovací frekvence × bitová hloubka × kanály. Komprese je bezeztrátová, nebo ztrátová.

Vzorce a výpočty

O čem to je

Správce sítě odhaduje, kolik místa zabere archiv kamer. Grafik volí formát pro tisk, zvukař kvalitu nahrávky. Všichni počítají stejně: kolik údajů, krát kolik bitů na údaj. Tady máš ty vzorce v přehledu.

Nové pojmy

Bit, bajtBit (b) je 0 nebo 1. Bajt (B) je 8 bitů. Při výpočtech velikosti vždy nakonec děl osmi, chceš-li bajty.24 bitů = 3 bajty.
KódováníPravidlo, které převádí informaci na čísla a čísla na bity. Kdo data čte, musí použít stejné kódování jako ten, kdo je zapsal.Text v UTF-8 otevřený jako Windows-1250 má rozbitá česká písmena.
Rozsah n bitůn bitů dá 2ⁿ různých kombinací. Kladná celá čísla se tak dají uložit od 0 do 2ⁿ − 1.8 bitů: 0–255. 16 bitů: 0–65 535.

Celá čísla se znaménkem

Dvojkový doplněkBěžný způsob, jak uložit záporná čísla. Nejvyšší bit říká znaménko (1 = záporné). Záporné číslo vznikne tak, že u kladného obrátíš všechny bity a přičteš 1. V 8 bitech uložíš −128 až 127.−1 je v 8 bitech 1111 1111.
Zapiš −5 v 8bitovém dvojkovém doplňku.
+5 = 0000 0101. Obrať bity: 1111 1010. Přičti 1: 1111 1011. Kontrola: nejvyšší bit je 1, číslo je záporné.

Text

ASCII je nejstarší tabulka znaků: jen anglická abeceda, číslice a značky. Unicode je tabulka všech znaků světa a UTF-8 je nejběžnější způsob, jak její čísla uložit do 1 až 4 bajtů. Starší tabulky Windows-1250 a ISO 8859-2 přidaly k ASCII středoevropská písmena.

KódováníBitů na znakZnakůČeština
ASCII7 (ukládá se v 1 B)128ne
Windows-1250, ISO 8859-28256ano
UTF-8 (Unicode)8 až 32 (1–4 B)přes milion možnýchano

UTF-8 je dnes standard webu i většiny programů. Znaky z ASCII v něm mají stejné kódy jako v ASCII, proto je s ASCII zpětně kompatibilní.

Obraz

Pixel a barevná hloubkaPixel je jeden bod rastrového obrázku. Barevná hloubka je počet bitů na pixel. Při RGB po 8 bitech je to 24 bitů = 3 B na pixel.Černobílý obrázek bez odstínů potřebuje jen 1 bit na pixel.
Spočítej pixely: šířka · výška.
Vynásob barevnou hloubkou v bitech.
Vyděl 8 – máš bajty.
Převeď na kB/MB (děl 1 000) nebo KiB/MiB (děl 1 024).
Obrázek 800 × 600 pixelů má 256 odstínů šedi. Kolik bajtů zabere bez komprese?
256 odstínů = 2⁸ → 8 bitů = 1 B na pixel. Pixelů 800 · 600 = 480 000. Velikost 480 000 B = 480 kB (asi 469 KiB).

Zvuk

Vzorkovací frekvence a bitová hloubkaVzorkovací frekvence = kolikrát za sekundu se změří hlasitost zvukové vlny (Hz). Bitová hloubka = kolik bitů má jedno měření. Kanály = mono 1, stereo 2.Telefonní hovor: 8 kHz, 8 bitů, mono.
Velikost v bitech = vzorkovací frekvence · bitová hloubka · počet kanálů · čas v sekundách.
Vyděl 8 – máš bajty.
Ověř si, že frekvence je aspoň dvojnásobek nejvyššího tónu, který chceš zachytit.
Kolik bajtů zabere 10 s záznamu mono, 8 kHz, 8 bitů?
8 000 · 8 · 1 · 10 = 640 000 bitů. Děleno 8 = 80 000 B = 80 kB.
  • Kód „A“ v ASCII – 65 (0100 0001)
  • Barvy při 24 bitech – 16 777 216
  • CD audio – 44,1 kHz, 16 bitů, stereo
  • 8 bitů se znaménkem – −128 až 127
  • „č“ v UTF-8 – 2 bajty

Než kartičku otočíš, řekni odpověď nahlas.

✗Obrázek 1000 × 1000 pixelů s 24bitovou barvou má 24 000 000 B.
✓1 000 000 pixelů · 24 b = 24 000 000 bitů = 3 000 000 B.

Barevná hloubka je v bitech. Na konci výpočtu je potřeba dělit osmi.

Velikost dat = počet údajů × bitů na údaj, pak děleno 8. Obraz: šířka · výška · hloubka. Zvuk: frekvence · hloubka · kanály · čas. Záporná čísla se ukládají dvojkovým doplňkem, text v UTF-8.