Reprezentace dat
Transkript
Reprezentace dat INP 2008 FIT VUT v Brně Pojem kód a typy kódů Definice: Kód je vzájemně jednoznačné přiřazení mezi symboly dvou množin. (Tedy tabulka.) Přehled kó kódů pro reprezentaci dat: Data můžeme rozdělit na • čísla, a na • literály, tedy nenumerická data • (instrukce sem nepatří) Data reprezentujeme pomocí kódů, které můžeme zhruba rozdělit do dvou skupin: • kódy pro vnější přenos dat, EBCDIC, ASCII, a jeho modifikace, a • kódy pro vnitřní reprezentaci dat, jako doplňkový kód, BCD, přičemž pro čísla zadaná ve formátu s pohyblivou řádovou čárkou FP se používají jiné kódy, než pro čísla s pevnou řádovou čárkou FX. 2 Tabulka kódu EBCDIC BCD (Binary Coded Decimal) je čtyřbitový váhový kód vyjadřující desítkové číslice. Základem kódu EBCDIC (Extended BCD Interchange Code) je kód BCD rozšířený na 8 bitů. 3 Kód ASCII Kód ASCII (American Standard Code for Information Interchange) byl definován jako 7-bitový. Kód ASCII kóduje v zásadě stejné skupiny znaků jako kód EBCDIC, ale využívá pouze prostoru 7-bitového kódu. Využití tohoto prostoru je však stoprocentní. http://cs.wikipedia.org/wiki/ASCII 4 Kód ASCII a kódy z něho odvozené • Je zde možnost doplněním osmého bitu zvětšit prostor kódu o tzv. pravou polovinu, která byla definována již velmi mnoha způsoby, z nichž nás budou zajímat ty, které kódují českou abecedu: KOI8-cs, EAST 8, ICL, PC std., Kamenických (mjk), Latin – 2, 1250 Microsoft Windows. • Pro nás je závazný kód Latin - 2, protože jej definovaly mezinárodní normalizační organizace ISO (International Organization for Standardization) a IEC (International Electrotechnical Commission). • Jde o normu ISO/IEC 8859: Information Processing - 8-bit single-byte coded graphic character sets s 9 částmi: – – – – – – – – – 1: Latin alphabet No. 1 - pro západní Evropu 2: Latin alphabet No. 2 - pro východní Evropu 3: Latin alphabet No. 3 4: Latin alphabet No. 4 5: Latin/Cyrillic alphabet 6: Latin/Arabic alphabet 7: Latin/Greek alphabet 8: Latin/Hebrew alphabet 9: Latin alphabet No. 5 5 Latin – 2 (ISO 8859-2, 1987) 6 1250 Microsoft Windows 7 UNICODE: 16 bitů (UTF-16), později 32 bitů (UTF-32) 8 Číselné soustavy Číselné soustavy dělíme na polyadické polyadické a nepolyadické nepolyadické. Polyadická číselná soustava (v angl. radix number system, tedy číselná soustava se základem) má definovaný jeden základ z (base, radix), z ≥ 2, nebo více základů zi ≥ 2. Může tedy jít i o soustavu se smíšenými základy. V polyadické soustavě s jedním základem definujeme z-adické adické číslice ai , 0 ≤ ai < z, nejvyšší číslice amax = z-1. Obrazem čísla A A= n −1 i a z ∑ i i=− m je k-tice an-1 an-2 ... a1 a0 , a-1 a-2 ... a-m. Váhový součet z-adických číslic ai, kde váhy jsou příslušné mocniny základu z můžeme nazvat polyáda. Podíl dvou sousedních vah, kdy větší váhu bereme jako dělenec je roven z. U soustavy s více základy je polyáda definována podobně, ale s tím rozdílem, že podíl sousedních vah není konstantní, ale je roven zi. Používané základy jsou 2, 10, 16; z hlediska teorie kódování informace je optimální základ e= 2,71828182..., tedy nejbližší je základ 3. 9 Nepolyadické soustavy Příkladem nepolyadické soustavy je soustava římských číslic I V X L C D M proč proč ty tvary? 1 5 10 50 100 500 1000 Tato soustava je jistě pro počítání nevhodná. Použitelná nepolyadická soustava je soustava zbytkových tř tříd (residue number system), označovaná jako kód zbytkových tříd KZT. Soustava je definovaná pomocí uspořádané k-tice vzájemně různých prvočísel základů z0, ... zk-1. Obrazem čísla A je uspořádaná k-tice celých čísel a a0 a1 a2 ... ak-1, pro která platí ai < zi, kde ai = A mod zi. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2 3 0 0 1 1 0 2 1 0 0 1 1 2 0 0 1 1 0 2 1 0 0 1 1 2 0 0 1 1 … 5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 10 Soustava zbytkových tříd Pokrač Pokračová ování: Máme tedy zadány základy 2, 3, 5. Zbytkové třídy pak jsou: 0 0 0 1 1 1 2 2 3 4 Např. číslo 5 pak vyjádříme trojicí zbytků po dělení zadanými základy, tedy (1 2 0). Jednoznačně lze vyjádřit pouze číslo A, pro které platí A < ∏ zi i pro všechna i, tedy pouze číslo, které je menší než tzv. perioda neboli interval zobrazení. V našem příkladě je to 2∗3∗5 = 30. Vidíme, že velikost čísla A nezískáme polyadickým součtem. Soustava zbytkových tříd umožňuje rychlé operace sčítání, odčítání a násobení, protože se neuplatňují přenosy mezi jednotlivými řády. Dělení není jednoznačně definovaná operace, rovněž porovnávání velikosti čísel je prakticky nemožné. Navíc doba převodu do a zpět ze soustavy KZT může často pohltit časovou úsporu získanou na rychlých aritmetických operacích. Proto se KZT používá ve speciálních případech, kdy uvedené problematické operace nejsou zapotřebí, což je případ číslicové filtrace signálů a obecně v oblasti signálových procesorů. 11 Formáty čísla s pevnou řádovou čárkou a) n 2 2n-1 2n-2 1 2 . . . 0 2 n bitů 1 mimo rozsah zobrazení b) 0 2 -1 2 řádová čárka -m+1 -m 2 2 . . . m bitů řádová čárka c) n-1 2 2n-2 . . . n bitů d) 0 -1 2 2 . . . -m 2 m řádová čárka . . . S 1 znaménko řádová čárka 2-m 12 Obrazy čísla A se znaménkem (v FX) (porovnání variant a) a b) z předchozího slajdu) V doplňkovém kódu platí pro A > 0 i A < 0 jediný předpis 2n + A, protože konstanta 2n leží mimo rozsah zobrazení a po jejím přičtení k kladnému číslu se obraz čísla nezmění. Vzhledem k tomu, že v inverzním kódu je obraz kladného čísla totožný s vyjadřovaným číslem a konstanta 2n -1 leží v rozsahu zobrazení, nelze obraz čísla v inverzním kódu zapsat jedním výrazem. To svědčí o jisté nesystematičnosti inverzního kódu. 13 Obrazy +7 a -7 na osmi bitech včetně znaménka Přímý kód se znaménkem Inverzní kód (1- doplněk) Dvojkový doplňkový kód Kód se sudým posunutím (128) Kód s lichým posunutím (127) +7 0000 0111 0000 0111 0000 0111 1000 0111 1000 0110 -7 1000 0111 1111 1000 1111 1001 0111 1001 0111 1000 14 Význam kódových kombinací Formát a), n = 8 Význam v kódu 76543210 Přímý se zn. Inverzní Doplňkový Se sud. pos. S lich. pos. 128 127 00000000 0 0 0 -128 -127 00000001 1 1 1 -127 -126 00000010 2 2 2 -126 -125 … … … … … … 01111110 -2 -1 01111111 127 127 127 -1 0 10000000 -0 -127 -128 0 +1 10000001 -1 -126 -127 +1 +2 … … … … … … 11111110 -126 -1 -2 126 127 11111111 -127 -0 -1 127 128 15 Chyby zobrazení čísla FX • Zobrazené číslo FX je zatíženo třemi typy chyb: – chyba měření: vzniká při pořizování čísla vlivem chyby metody měření – chyba stupnice (scaling): číselná soustava nemůže na konečném počtu míst vyjádřit přesně všechny hodnoty – chyba zanedbáním (truncation = odseknutí) a zaokrouhlením (rounding) 16 Chyba stupnice • Na obrázku je průběh funkce chyby stupnice pro čísla s pevnou řádovou čárkou ve formátu a). • Vidíme, že jsou přesně vyjádřena pouze celá čísla 0, 1, 2, 3 ..., kdy chyba = 0. Např. obraz čísla 1,5 má maximální velikost chyby, a to 0,5. • Průběh funkce zobrazující velikost chyby je lineární mezi body celých čísel a čísly 0,5, 1,5, atd. Od obrazu největšího (a nejmenšího) zobrazitelného čísla začíná chyba lineárně růst nad všechny meze. velikost chyby e 0,5 ... -2 maximální zobrazitelná hodnota -1 0 1 2 maximální zobrazitelná hodnota 17 Chyba zanedbáním a zaokrouhlením • Vidíme, že pro čísla ve formátu a) roste chyba zanedbáním a zaokrouhlením v intervalu <0,1) od nuly do 1, a obdobně v dalším intervalu <1,2), atd. • Tuto chybu lze zmenšit na max. 0,5 tzv. polonastavením, tedy přičtením 0,5 k bitům vpravo od požadovaného nejnižšího bitu a zanedbáním příslušných bitů. Dosáhne se tak obdobného průběhu, jako má chyba stupnice. Padne-li však hodnota přesně doprostřed mezi dva zobrazitelné body, vzniká chyba posuvem (bias error) s velikostí 0,5. • Přesnějším postupem je proto statistické zaokrouhlení (IEEE), které čísla přesně uprostřed zaokrouhluje jednou nahoru a jednou dolů. To se obvykle v praxi dělá zaokrouhlením na sudé, nebo na liché číslo. velikost chyby 1 -2 -1 0 1 2 zobrazitelné hodnoty 18 Pozn. Zaokrouhlování desítkových čísel 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 19 Desítková čísla dvojkově kódovaná • • Člověk pracuje s desítkovými čísly, kdežto nejpřirozenější vnitřní reprezentace v počítači je dvojková. Z toho vyplývá nutnost převodu čísel v obou směrech. Doba převodu však není zanedbatelná a proto se v počítačích často používá rovněž aritmetika desítková, která pracuje s desítkovými číslicemi kódovanými binárně. Označení BCD je vyhrazené pro jediný kód, přestože toto označení je obecně použitelné pro celou skupinu desítkových dvojkově vyjádřených kódů, viz tabulka. Číslice 0 1 2 3 4 5 6 7 8 9 BCD ASCII n+3 2z5 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0011 0000 0011 0001 0011 0010 0011 0011 0011 0100 0011 0101 0011 0110 0011 0111 0011 1000 0011 1001 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 11000 00011 00101 00110 01001 01010 01100 10001 10010 10100 20 Sčítání v kódu BCD • Vzhledem k tomu, že cílem je návrh desítkové aritmetiky, je prvním krokem zjištění aritmetických vlastností uvedených kódů. • Analýzou sčítání dvou číslic v BCD zjistíme, že je-li binární součet větší než 9, je pro návrat do kódu BCD nutná korekce, a to přičtení konstanty 6 (binárně 0110). • K podobnému závěru dojdeme u kódu ASCII. 2 0010 +3 0011 5 0101 5 +6 ? +K1 1 0101 0110 1011 0110 = 6 0001 = 11dec 9 +9 1 +K1 1 1001 1001 0010 = 12 0110 1000 = 18dec 21 Počítání v kódu 2 z 5 • • • • • Kód 2 z 5 je neváhový kód, který kóduje informaci nadbytečným množstvím bitů, je tedy redundantní. Redundance se projevuje příznivě schopností kódu detekovat jednobitové chyby, jde tedy o kód SED - Single Error Detection (viz přednáška o kódech). Jeho aritmetické vlastnosti jsou však natolik nepříznivé, že použití binární sčítačky je prakticky nemožné. Je proto třeba navrhnout speciální sčítačku, pracující v tomto kódu. Kromě klasického logického návrhu je v tomto případě další jednoduché řešení - navrhnout tabulkový procesor. Realizace využívá permanentní paměti ROM, jejíž adresu tvoří všechny kombinace hodnot vstupních operandů a obsah je hodnota výsledku včetně případného přenosu C. Výsledek operace se určí nahlédnutím do tabulky, odtud tedy název tabulkový procesor (look-up table). Jaké je využití paměťové kapacity: adresových bitů je 5 + 5=10, paměťových míst je tedy 210 = 1024. Využitých paměťových míst je 10 x 10 = 100. Využití je 100:1024 = 9,76%. Adresa ROM Data ROM … … 00101 00110 01010 A=2 B=3 C=5 … … 22 Nevýhody počítání v BCD • Použití desítkových kódů BCD má své nevýhody: K vyjádření čísel je použito více bitů než při použití binárního kódu, což vede na větší potřebnou kapacitu paměti. • Na n bitech lze v případě binárního kódu vyjádřit 2n čísel, nebo 10n/4 = 20,830n BCD číslic. • Aritmetické obvody jsou složitější, protože se přidává korekce výsledku a doplňkové obvody pro vytvoření desítkového přenosu. 23 Huffmanův kód • Jakým způsobem zakódovat znaky abecedy tak, aby častěji se vyskytující znaky byly zakódovány pomocí kratší binární sekvence? – Př. Morseovka • Huffmanovo kódování umožňuje optimálně vyřešit tento problém. Vychází ze známých frekvencí jednotlivých kódových značek. Pokud je četnost výskytu značek neznámá, musí se odhadnout. • Huffmanovo kódování patří mezi kódy s proměnnou délkou (VLC – Variable Length Coding) • Příklad: Máme zadán hypotetický instrukční soubor a frekvence výskytu jednotlivých instrukcí. Jak zakódovat častěji se vyskytující instrukce kratším kódem a zřídka se vyskytující instrukce delším kódem? – – – – – – – – LOAD STORE ADD AND NOT SHIFTR JUMP HALT frekvence výskytu fi 1/4 1/4 1/8 1/8 1/16 1/16 1/16 1/16 24 Př. Huffmanův kód LOAD STO ADD AND NOT RSH JUMP HALT 1/4 1/4 1/8 1/8 1/16 1/16 1/16 1/16 = zadané fi 1/2 1/8 1/4 1/8 1/4 1/2 1 25 Huffmanův kód – pokr. • Postup vytvoření grafu kódu je následující: najdeme dvojici operačních znaků, jejichž součet pravděpodobností je nejmenší. Tyto dva znaky se nahradí společným uzlem v grafu s pravděpodobností výskytu danou součtem pravděpodobností. Dostali jsme tak skupinu znaků s počtem znaků o jedničku menším, než má celý IS. Na této nové skupině opět hledáme dvojici s nejmenším součtem pravděpodobností. Naznačený postup opakujeme tak dlouho, až spojíme poslední dvojici do jednoho uzlu s pravděpodobností výskytu rovnou jedné. • Následuje fáze kódování: vycházíme z jediného koncového uzlu a ke každé ze dvou hran, které do uzlu vcházejí připíšeme hodnotu 1 nebo 0. Postup opakujeme tak dlouho, až označíme všechny hrany. Kód jednotlivých znaků zjistíme tak, že procházíme pro každý znak celou cestu od koncového uzlu do příslušného počátečního uzlu a zaznamenáváme si popis hran, kterými procházíme. Pro naše zadání obdržíme např. tento kód: 26 Př. Huffmanův kód LOAD STO ADD AND NOT RSH JUMP HALT 1/4 1/4 1/8 1/8 1/16 1/16 1/16 1/16 = zadané fi 1 1 1 0 0 1 0 0 1/8 1/2 1/4 1/8 1 1/4 1 1 0 0 1/2 1 0 27 Př. Huffmanův kód – pokr. k ód • • • • • • • • LOAD STORE ADD AND NOT SHIFTR JUMP HALT 11 10 011 010 0011 0010 0001 0000 délka li 2 2 3 3 4 4 4 4 28 Huffmanův kód – použití • Je to kód pro odstranění/potlačení redundance • v algoritmu JPEG, PKZIP … • Při analýze efektivnosti instrukčního souboru – Huffmanovo kódování jednotlivých instrukcí se v praxi pro zakódování jednotlivých operačních znaků nepoužívá. Je účelné jej však použít při volbě délky kódů skupin operačních znaků u instrukčního souboru (IS) s proměnnou délkou operačního znaku. – Slouží hlavně jako referenční model pro hodnocení efektivnosti IS, tedy k stanovení vzdálenosti kódu daného IS od optimální verze. 29 Míry kódů s proměnnou délkou • a) Střední aritmetická délka lar je dána výrazem • b) Střední dynamická délka l na zakódování jednoho operačního znaku je dána • c) Optimální počet bitů nutný k zakódování skupiny znaků je dán výrazem • d) Redundance kódu jiného než optimálního se vypočte pomocí výrazu 1 n lar = ∑ li n i =1 n l = ∑ li f i i =1 n lopt = −∑ f i log 2 f i i =1 R= l − lopt l 30
Podobné dokumenty
Novinky v kódování 2015/2016
Diagnostické funkce pro změnu kódování:
• Čtení dat kódování z řj. a jejich opětovný zápis
• Čtení a mazání paměti závad řj.
• Čtení bloků naměřených hodnot
Vypracovane otazky
45. Jaký je rozdíl mezi synchronním a asynchronním čítačem
Synchronní čítač – hodinové signály jsou spojeny. To má za následek, že se signál šíří mezi jednotlivý
klopnými obvody stejně rychle → výs...
Úvod do číslicové techniky - Univerzita Tomáše Bati ve Zlíně
1864 v Dublinu). Aplikacemi do elektrotechniky se zabýval
hura do prace - Škomam
• abstraktní entita užívaná pro vyjádření množství
nebo pořadí zapisovaná pomocí číslic (v
různých číselných soustavách) a pomocných
znaků (. , + -)
slajdy - Jan Outrata
kódových slov a prefixů využito všech m symbolů kódové abecedy a kód má být optimální
prefixový.
Huffmanův strom TH (A) = hVH (A), EH (VH (A))i = reprezentace Huffmanova kódu
C(A) formou m-árního s...
příklady PLC
Navrhněte logický obvod, který bude realizovat neúplnou hardwarovou sčítačku dvou bitů.
Vstupy: bity A, B. Výstup: nižší řád Y0 , vyšší řád (tzv. přenos) Y1 ).
11. příklad: Úplná dvoubitová sčítačk...
Využití Source Engine k tvorbě interaktivního modelu digitální továrny
následně otitulkována. Z každého
ého slajdu byla vytvořena textura. Prezentace jako taková funguje na
principu výměny celých brushů,, z nichž každý nese texturu jednoho slajdu. Ke každému snímku js...