Kódy a kódování dat Kódování je proces, při kterém se každému znaku nebo postupnosti znaků daného souboru znaků jednoznačně přiřadí znak nebo postupnost znaků z jiného souboru znaků. Kódování je tedy transformace určité informace z jedné formy na druhou pomocí určitého algoritmu. Díky počítačům se nejčastěji používá kódování dat a informací do číselné podoby. Používá se také nečíselné kódování. Typickým příkladem nečíselného kódování z praxe je semafor, kde červená = stůj a zelená = jdi. Dalším příkladem je např. Morseova abeceda. Moderní elektronické systémy na zpracování informací používají přednostně Dvojkové (binární) signály. Jsou tvořeny jen dvěma znaky 0 a 1. Pomocí 1 a 0 je možno vytvořit velké množství různých systémů přiřazení. Vznikl tak velký počet různých kódů. Některé jsou vhodné pro výpočty, jiné k přenosu dat nebo k měření. Všechny požadované vlastnosti se nedají splnit jediným univerzálním resp. kompromisním kódem. Kódováním převedeme informaci určenou ke zpracování do tvaru, který je pro technické zpracování nejvýhodnější. Kódované informace můžeme přenášet rychleji a bezpečněji a při vhodném typu kódu jsme schopní dokonce rozpoznat nebo dokonce opravit chybu, která vznikla v průběhu přenosu. Kódování umožňuje také informaci utajit. Můžeme klasifikovat hlavní skupiny kódů, kterými jsou kódy pro aritmetické a logické operace kódy pro přenos a ukládání na média kódy bezpečnostní a opravné. Kódy pro aritmetické a logické operace byly navrženy za účelem využití v matematice a proto aritmetické operace jako je sčítání nebo násobení jsou s těmito kódy celkem snadné. Kódy pro přenos a ukládání na médium byly navrženy pro snadnou komunikaci mezi zařízeními. Na tyto kódy jsou kladeny zvláštní požadavky jako je malá stejnosměrná složka, dostatečné časté změny z logické 0 na logickou 1 a naopak, odolnost proti rušení atd. Do další skupiny patří bezpečnostní a opravné kódy a také kódy pro šifrování zpráv. Binární (dvojkové) kódy Kód je zápis nějakého znaku jiným zápisem. Při kódování znaků představuje kód jednoznačné přiřazení mezi znaky dvou různých abeced nebo znakových sad. Binární kódy: váhové kódy (Aikenův kód, kód BCD, Excess 3) neváhové kódy (Grayův kód, Excess 3) detekční kódy Kód Aikenův
Je pojmenovaný podle amerického počítačového odborníka Howarda Aikena a byl určen pro výpočty s dekadickými čísly v počítačích. Aikenův kód má různé váhy: váhu 2 4 2 1 váhu 3 3 3 1 Aikenův kód patří do skupiny BCD kódů. Aikenův kód 2-4-2-1 je uvedený v tabulce: Kód BCD Tab. 1: Aikenův kód 2-4-2-1 Jedná se o dvojkově kódovaný desítkový kód (Binary Coded Decimal). Tento kód se používá pro kódování desítkových číslic 0 až 9. V tomto kódu je každá desítková číslice vyjádřena kódovým slovem se čtyřmi bity ve dvojkové soustavě, jak je znázorněno v tab. 2. Kód má váhy 8-4-2-1. To znamená, že LSB (bit první zprava) má váhu 1, druhý váhu 2, třetí 4 a MSB 8. Výhodou je použití kódu v BCD aritmetice a v čítačích. Nevýhodou je, že obsahuje kombinaci 0000 (kritickou v případě poruchy) a nesymetrie kódu. Kód Excess 3 ( kód BCD+3) U kódu BCD vznikne problém, nechceme-li vyjádřit žádnou informaci. V tomto případě ukazuje systém 0000. Abychom tomu předešli, byl navržen kód BCD+3 neboli Excess 3 (Excess = nadbytek). Tento kód byl využíván v některých počítačích pro snazší realizaci dekadických operací. Kód Excess 3 patří do skupiny BCD kódů, není však váhový. Kódy BCD a Excess 3 jsou znázorněny v tab. 2. Z tabulky je patrná symetrie kódu Excess 3. To znamená komplementární vztah mezi čísly 0-9, 1-8, 2-7, 3-6 a 4-5. Kód BCD symetrický není.
Tab. 2 Vyjádření kódu BCD a Excess 3. Grayův kód Nevýhodou předešlých kódů bylo, že při přechodu z některých dvojkových hodnot na následující hodnoty se mění víc než jeden bit. Například při přechodu z čísla 7 na 8 se mění současně 4 bity (0111 na 1000). Při zpracování asynchronním čítačem, může tento jev způsobovat chyby.
Aby se vyloučil tento druh chyb, používa se Grayův kód. U tohoto kódu se při zmenšení nebo zvětšení o 1, změní jen hodnota jednoho bitu. Tento kód se někdy nazývá také kód s jednou změnou nebo též reflexní kód. Vzhledem k této vlastnosti se Grayův kód používá ke kódování políček Karnaughovy mapy, jak uvidíme v jedné z dalších kapitol. Nevýhodou je nemožnost použití kódu pro aritmetické operace. V tabulce 3 je uveden binární a také Grayův kód. Grayův kód se konstruuje z binárního kódu použitím operací XOR (exclusive OR) podle vztahů: Ochrana při přenosu dat g4 b4 g3 b4 b3 g2 b3 b2 g1 b2 b1 Zakódovaná binární slova často přenášíme na určitou vzdálenost přenosovou cestou. Při číslicovém přenosu se může stát, že se jednotlivé bity přenášené posloupnosti čísel při přenosu zkreslí. Je tedy nutné umět se bránit důsledkům takových chyb v přenosu. Postupujeme přitom tak, že přenesenou informaci zkontrolujeme, zda neobsahuje chyby, a v dalším zpracování budeme pokračovat až poté, kdy zjistíme, že tomu tak není. Ke kontrole přijatých zakódovaných slov používáme různé metody. Obr. 1:Chybný přenos informace Kontrola paritou nám tedy dovolí odhalit chybu. Po přijetí zprávy kontrolujeme, zda má přijaté slovo sudý nebo lichý počet jedniček. Když tomu tak není, víme, že při přenosu došlo k chybě, a můžeme například požadovat opakování přenosu. Místo zabezpečení dat jedním paritním bitem se používá rozšířený samoopravný Hammingův kód, který obsahuje informační a více kontrolních paritních bitů. Kód umožňuje v kódovém slově lokalizovat 1 chybu a detekovat dvojnásobnou chybu. Lokalizovaná chyba je opravena invertováním chybného bitu. Alfanumerické kódy Jsou to kódy, ve kterých se mohou vyskytovat všechna písmena, číslice a jiné znaky. Ve světě se používají různé alfanumerické kódy, ze kterých nejvýznamnější v počítačové technice sa používa 7-bitový kód, známy pod oznacením ASCII (American Standard Code of Information Interchange).
Sedmibitový kód ASCII se používá na vyjádření symbolů malé a velké abecedy, číslic, interpunkčních znaků, speciálních znaků a 32 řídicích povelů. Osmý bit se používal na kontrolu správnosti při přenosu pomocí parity. Na obrázku je pro názornost uvedena zjednodušená tabulka ASCII kódu. Z tabulky je patrné, že např. bísmeno B je binárně v sedmi bitech zakódováno jako 100 00102, což odpovídá hexadecimálnímu vyjádření 42H a dekadicky 66D. Šifrování Kryptografie či šifrovani je nauka o utajeni informace převedenim do podoby nečitelne bez specialni znalosti kliče. Šifrovaci algoritmy v moderni kryptografii všeobecně dělime podle kliče na symetricke a asymetricke. Prvně jmenovane uživaji stejny klič pro šifrovani a dešifrovani, druhé podle určiteho vzorce vytvařeji dvojici veřejneho a soukromeho kliče. Když pošleme někomu šifrovanou správu, potřebuje na její rozšifrování poznat postup, kterým byla zašifrovaná a klíč, který potřebujeme na rozšifrování. Jedním z nejjednodušších způsobů je záměna písmena za jiné. Pro člověka, který nemá k dispozícii tabulku s odpovídajícími dvojicemi písmen a číslic to může byt náročné. Pro počítač je ale tato úloha hračkou. Totéž platí také v případě, že každé písmeno nahradíme číslem alebo znakem. Pomocí uvedené tabulky uvedeme jednoduchý způsob kódování. Zakódujeme slova PRENOS DAT Potom dostaneme KMZIJN YVO. Existují různé postupy šifrování telefonních hovorů. Šifrovací zařízení je zapojováno mezi telefon a linku a provádí kompresi a šifrovani zvuku. Zařizeni umožňuje volbu kliče pro šifrovani, např. otočením spektra řečového signálu nebo pomocí řady dalších algoritmů.