Reprezentace dat. INP 2008 FIT VUT v Brně

Podobné dokumenty
Principy počítačů I Reprezentace dat

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Kódováni dat. Kódy používané pro strojové operace

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Fz =a z + a z +...+a z +a z =

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Struktura a architektura počítačů (BI-SAP) 5

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Kódy a kódování dat. Binární (dvojkové) kódy. Kód Aikenův

Informatika Datové formáty

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Zobrazení dat Cíl kapitoly:

Aritmetické operace a obvody pro jejich realizaci

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

ČÍSELNÉ SOUSTAVY PŘEVODY

Mikroprocesorová technika (BMPT)

REPREZENTACE DAT. Principy počítačů I. Literatura. Literály. Typy dat. Literály. Čísla Instrukce. Znaky. Logické hodnoty

Základní jednotky používané ve výpočetní technice

Struktura a architektura počítačů (BI-SAP) 6

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Čísla a číselné soustavy.

v aritmetické jednotce počíta

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Algoritmy a datové struktury

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Architektury počítačů

Číselné soustavy. Binární číselná soustava

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

Operace ALU. INP 2008 FIT VUT v Brně

Čísla v počítači Výpočetní technika I

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

Pohled do nitra mikroprocesoru Josef Horálek

Vnitřní reprezentace dat

ZŠ ÚnO, Bratří Čapků 1332

Přednáška 2: Čísla v počítači. Práce s počítačem. Číselné soustavy. Převody mezi soustavami. Aritmetické operace. Uložení čísel v paměti počítače

VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing.

B. Sčítání,odčítání adoplňkovýkód

Čísla, reprezentace, zjednodušené výpočty

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Čísla a aritmetika. Řádová čárka = místo, které odděluje celou část čísla od zlomkové.

Převody mezi číselnými soustavami

Dělení. INP 2008 FIT VUT v Brně

Úvod do informačních technologií

Převod Bin do BCD pomocí Hornerova schématu

35POS 2010 Počítačové systémy 1 Úvod, jazyk C Doc. Ing. Bayer Jiří, Csc. Ing. Pavel Píša

C2115 Praktický úvod do superpočítání

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Struktura a architektura počítačů

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

BI-JPO (Jednotky počítače) Cvičení

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

E. Pohyblivářádováčárka

1. Základní pojmy a číselné soustavy

3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům

Čísla, reprezentace, zjednodušené výpočty

Datové typy a jejich reprezentace v počítači.

Tato tematika je zpracována v Záznamy přednášek: str materiál: PrikladyZobrazeniCisel.pdf

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Informační a komunikační technologie

Architektura počítačů Logické obvody

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Sada 1 - Základy programování

Posouzení přesnosti měření

KOMPRESE OBRAZŮ. Václav Hlaváč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání.

Analogově-číslicové převodníky ( A/D )

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

Principy počítačů a operačních systémů

Principy cpypočítačůčů a operačních systémů

Architektura počítačů Logické obvody

Algoritmizace a programování

Násobení. MI-AAK(Aritmetika a kódy)

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Digitální signály a kódy

Architektury počítačů a procesorů

Způsoby realizace této funkce:

KOMBINAČNÍ LOGICKÉ OBVODY

MATURITNÍ TÉMATA Z MATEMATIKY

PB002 Základy informačních technologií

POČET PLATNÝCH ČÍSLIC PRAVIDLA PRO UVÁDĚNÍ VÝSLEDKŮ MĚŘENÍ 2

Dělení. MI-AAK(Aritmetika a kódy)

Struktura a architektura počítačů

KOMPRESE OBRAZŮ. Václav Hlaváč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Pravděpodobnost a statistika

LEKCE 6. Operátory. V této lekci najdete:

Konverze textových formátů

3. Aritmetika nad F p a F 2

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1 z :27

Jednoduché cykly

Úvod do teorie informace

Posloupnosti a jejich limity

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ó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é a 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ů z i 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 a i, 0 a i < z, nejvyšší číslice a max = z-1. Obrazem čísla A A = n 1 i= m je k-tice a n-1 a n-2... a 1 a 0, a -1 a -2... a -m. Váhový součet z-adických číslic a i, 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 z i. 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. a i z i 9

Nepolyadické soustavy Příkladem nepolyadické římských číslic soustavy je soustava I V X L C D M 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říd t (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ů z 0,... z k-1. Obrazem čísla A je uspořádaná k-tice celých čísel a a 0 a 1 a 2... a k-1, pro která platí a i < z i, kde a i = A mod z i. 2 3 5 0 0 0 0 1 1 1 1 2 0 2 2 3 1 0 3 4 0 1 4 5 1 2 0 6 0 0 1 7 1 1 2 8 0 2 3 9 1 0 4 10 0 1 0 11 1 2 1 12 0 0 2 13 1 1 3 10

Soustava zbytkových tříd 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 < 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ů. z i 11

Formáty čísla s pevnou řádovou čárkou a) b) 2 n 2 2... 2 2 n bitů 1 mimo rozsah zobrazení řádová čárka 2 2... 2 2 m bitů řádová čárka c) n-1 2 n-2 2... 0-1 2 2 n bitů m řádová čárka -m... 2 d) S 1... 2 -m znaménko řádová čárka 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 2 n + A, protože konstanta 2 n 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 2 n -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 +7-7 Přímý kód se znaménkem 0000 0111 1000 0111 Inverzní kód (1- doplněk) 0000 0111 1111 1000 Dvojkový doplňkový kód 0000 0111 1111 1001 Kód se sudým posunutím (128) 1000 0111 0111 1001 Kód s lichým posunutím (127) 1000 0110 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 maximální -2 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 BCD ASCII n + 3 2 z 5 0 0000 0011 0000 0011 11000 1 0001 0011 0001 0100 00011 2 0010 0011 0010 0101 00101 3 0011 0011 0011 0110 00110 4 0100 0011 0100 0111 01001 5 0101 0011 0101 1000 01010 6 0110 0011 0110 1001 01100 7 0111 0011 0111 1010 10001 8 1000 0011 1000 1011 10010 9 1001 0011 1001 1100 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 5 0101 9 1001 +3 0011 +6 0110 +9 1001 5 0101? 1011 1 0010 = 12 +K 1 0110 = 6 +K 1 0110 1 0001 = 11 dec 1 1000 = 18 dec 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 2 10 = 1024. Využitých paměťových míst je 10 x 10 = 100. Využití je 100:1024 = 9,76%. Adresa ROM 00101 00110 A=2 B=3 Data ROM 01010 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 2 n čísel, nebo 10 n/4 = 2 0,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? frekvence výskytu f i LOAD 1/4 STORE 1/4 ADD 1/8 AND 1/8 NOT 1/16 SHIFTR 1/16 JUMP 1/16 HALT 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é f i 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é f i 1 0 1 0 1 0 1 0 1/2 1/4 1/8 1/8 1 0 1 1/4 1 1/2 0 1 0 27

Př. Huffmanův kód pokr. kód délka l i LOAD 11 2 STORE 10 2 ADD 011 3 AND 010 3 NOT 0011 4 SHIFTR 0010 4 JUMP 0001 4 HALT 0000 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 l ar je dána výrazem b) Střední dynamická délka l na zakódování jednoho operačního znaku je dána l = 1 n ar l i n i= 1 n l = i= 1 l i f i c) Optimální počet bitů nutný k zakódování skupiny znaků je dán výrazem n lopt = fi log2 i= 1 f i d) Redundance kódu jiného než optimálního se vypočte pomocí výrazu R = l l l opt 30