Zbrazení dat Část 2 zbrazení čísel Cíl kapitly: Cílem tét č{sti je naučit se při debutv{ní číst hexadecim{lní hdnty dpvídající z{znamu celých a re{lných čísel. Zápis čísel Uvědmte si, že všechna čísla se zapisují d registrů a tedy ve dvjkvé pdbě musí mít pčet bitů dpvídající šířce registru (např. u 16bitvých prcesrů registry mají délku 16 neb 32bitů, a tedy zápis čísla meb znaků musí být na 16 resp. 32bitů) Přímý binární kód pužívá se jen u přirzených čísel Inverzní kód nebli jedntkvý dplněk Nejvyšší bit je. V pčítačích se běžně nepužívá. Kladné čísl začíná a zbylé řády jsu vyjádřeny přímým kódem. Záprné čísl je vytvřen bitvu inversí abslutní hdnty čísla. Nejvyšší bit (MSB) má hdntu 1, tj. mínus. Dvjkvý dplněk nebli dplňkvý kód. Kladné celé čísl je v dplňkvém kódu zbrazen přím (v přímém dvjkvém kódu), ale MSB bit má hdntu, u záprnéh čísla je nutné prvést bitvu inverzi a přičíst 1. K dvjkvému dplňku lze prvést dvjkvý dplněk (tj. k zaznamenanému číslu v registru najít čísl pačné). Flat čili čísla s phyblivu čárku se skládají z mantisy a expnentu. U dvjkvé sustavy je expnent psunutí řádu (s psunutu nulu) a mantisa nrmvané čísl. Výpčet je uveden v přílze. Úkly: 1. Zapište čísl -28 v dplňkvém kódu. K tmut číslu udělejte pět dvjkvý dplněk. Uvažujte 8mi bitvý registr. (11) 2. Jak se vypčátá abslutní hdnta? 3. Rzmyslete si pstup při dčítání v prcesru. Pčítač neumí dčítat a prt míst dčítání přičítá pačné čísl (tj. musí si vytvřit dvjkvý dplněk menšitele). Zkuste si vypčítat 8-6 a prveďte kntrlu v desítkvé sustavě (pstup 8 + (-6) ). 2.11.211 1 ČÍSLICOVÉ KÓDY
Strjvý kód Pr zpakvání jsu zde uvedeny nejběžnější způsby zápisu čísel a číslic Signed Byte Unsigned Byte Signed Wrd 16,(32, 64)-ti bitvé celé čísl - se em ulžené ve dvjkvém dplňkvém kódu - Wrd integer 16, 32-ti bitvé celé čísl - se em ulžené ve dvjkvém dplňkvém kódu - Shrt integer Signed Duble wrd 32, 64-ti bitvé celé čísl - se em ulžené ve dvjkvém dplňkvém kódu - Lng integer 31 Signed Quad Wrd 63 31 adr+ 4 31 2.11.211 2 ČÍSLICOVÉ KÓDY
Unsigned Wrd adr+ 1 BCD binárně kdvaná dekadická číslice - tent kód se téměř nepužívá. Jeh výhdu byla mžnst zbrazit unární perand (-, +) a binární perandy (+,-, krát, dělen). Kód je smibitvý pr každu dekadicku číslici a perátr cifra cifravelik st Packed BCD (Zhuštěný BCD) Zhuštěné BCD čísl (Packed BCD). Dnes se pužívá téměř výhradně packed BSD, takže se uvádí pd zkráceným názvem BCD kód. adr+n N BCD Digit 2N MSDig BCD Digit 2 BCD BCD Digit 1 Digit 1 ASCII zbrazení cifer pr vyjádření řetězce cifer, neb cifry jak znaku adr+n N ASCII Digit N ASCII Digit 1 ASCII Digit 1 2.11.211 3 ČÍSLICOVÉ KÓDY
String adr+n N Byte/ Wrd N MSB Byte/ Wrd 1 Byte Wrd Zbrazení reálných čísel Pr zbrazení reálných čísel je nutné nejdříve prvést převd reálných čísel d dvjkvé sustavy. Převádí se jen abslutní hdnty čísla, půvdní je na MSB. Pr názrnst následuje rzkreslení zápisu reálnéh čísla. Výpčty jedntlivých částí jsu uvedeny pzději. Flating Pint adr+ 9 63 4 31 Expnent velikst záznamu může být na: 8 bitů (1zn, 23expnent, 56 mantisa) 64 bitů (1zn, expnent, 48 mantisa) 32 bitů (1zn, expnent, 24 mantisa) Pdle délky záznamu reálnéh čísla rzeznáváme 32 bitvé reálné čísl (Single Precisin) pdle standardu IEEE 64 bitvé reálné čísl (Duble Precisin) pdle standardu IEEE 8 bitvé reálné čísl (Extended Precisin) pdle standardu IEEE Zapsané reálné čísl, jak ukazuje předešlý brázek, je rzdělen d 3 částí: -vý bit (MSB) - je kladné čísl, 1 je záprné čísl -expnent -mantisa K získání expnentu musíme reálné čísl zbrazené ve dvjkvé sustavě převést d nrmvanéh setinnu ardesu, tj. čísla mající před desetinnu čárku (budeme 2.11.211 4 ČÍSLICOVÉ KÓDY
pužívat tent nesprávný název) jen jednu platnu číslici tj. 1. (jinými slvy: celky mají vždy hdntu 1). Pčet psunutí tét desetinné čárky udává hdntu expnentu. Př. 111,1111 má nrmvaný tvar 1,111111 exp 11 (dekadicky +3) Neb,11 má nrmvaný tvar 1,1 exp -2 (dekadicky -2) D mantisy jsu ukládány významvé binární číslice, tzn. neukládjí se levstranné nuly, s tím, že první jednička (musí být před desetinnu čárku) se též neukládá. Tedy mantisa bsahuje druhu významvu číslici a další číslice vprav, t znamená, že bsahuje puze číslice za desetinnu čárku nrmvanéh tvaru. T neplatí pr 8 bitvé reálné čísl tj. čísl ve tvaru extended precisin. Tedy expnent vyjadřuje pčet binárních řádů, které se musí mantisa ve tvaru 1.xxxxxxxxx (nrmvanéh čísla) psunut, abychm dstali pžadvané čísl. Abychm se vyhnuli záprným číslům v expnentu, je tent expnent zapsán v kódu psunuté nuly (u single precisin nula dpvídá přepisu dekadickéh čísla 12 v přímém kódu), tj. -12 dpvídá -126 1-1 111 111 111 1111 1 1 65 11 (U Duble precisin je psuv 3FFH, u Extended precisin je psuv 3FFFH.) Tent způsb umžňuje snadné prvnání dvu čísel, tj. prvnávají se d véh bitu k nejnižšímu. single precisin Příklady zápisu uvádí následující tabulka Řád zapsanéh čísla 31 3 až 23 22 až čísl s expnent mantisa 12.5 1 1 11... -12.5 1 1 1 11....3 111 111 1... -.3 1 111 111 1... 1. 111 1111... Kde s je naménkvý bit Pr duble precisin vypadí tabulka následvně (jen záhlaví tabulky 2.11.211 5 ČÍSLICOVÉ KÓDY
Řád zapsanéh čísla 63 62 až 52 51 až Čísl S expnent mantisa Pr extended precisin záhlaví tabulky vypadá takt Řád zapsanéh čísla 9 8 až 64 63 až Čísl S expnent mantisa V následujících tabulkách jsu uvedeny rzsahy pr jedntlivé typy zápisu čísel Pascal ShrtInt 1 Byte -128...12 Integr 2-3268...326 Lng int 4-214483648...21448364 Byte 1...255 Wrd 2,,,65535 Real 2:9*exp-39...1,exp38 Single 1,5exp-45...3,4exp38 Duble 3,4exp-4932...1,1exp4932 cmp -2na63+1...2na63-1 C ++ Int, Shrt 2-3268...326 Lng 4-214483648...21448364 Char 1...255 Wrd 2,,,65535 Grafické infrmace Psledním typem infrmací jsu grafické. Pr ukládán se pužívají dva systémy rastrvé ukládání. Ukládají se infrmace jedntlivých bdech. Barva se vyjadřuje buď jak RGB neb CMY. Pr každu barvu se ukládá jas zvlášť. vektrvá grafika využívá rzkladu brazce na úsečky a bluky. Tent frmát je úsprnější. 2.11.211 6 ČÍSLICOVÉ KÓDY
Kntrlní tázky: 1. Uvědmte si rzdíl mezi číslem a číslicí. 2. C je t? cifra a znak? 3. Jaké je maximální a minimální čísl (v dekadickém tvaru) zapsané jak unsigned byte a signed byte? 4. Zbrazte čísl 25 a,25 v single precisin. 5. Odvďte zpětný pstup při hledání hdnty čísla zapsanéh v single precisin. 6. Zkuste zapsat v single precisin čísl (nula) a převeďte h zpět d dekadickéh tvaru. ZDŮVODNĚTE prč nedstanete stejnu hdntu.. Lze sčítat dvě čísla v expnenciálním tvaru s různým expnentem? Prč? 8. Liší se susední čísla zapsané v kódu psunuté nuly jedničku? Literatura (1) Cmputer 12/96 2.11.211 ČÍSLICOVÉ KÓDY
Přílha: Přepčet reálných čísel z desítkvé na dvjkvu sustavu Vzhledem k tmu, že desetinná místa reálných čísel jsu záprných řádů, je pstup při převdu bdbný jak u kladných řádů, ale dělení je nahrazen násbením, míst zbytků se uvádí přensy a přadí je pačné. Pstup: Reální čísl rzdělíme na celky a na část za desetinnu čárku. Celky převedeme klasickým způsbem. U desetinných míst pstupujeme následvně: Část za desetinnu čárku násbíme dvěma, a zapisujeme d přens d celků. Další řádek násbíme pět dvěma s tím, že celky d násbení nezahrnujeme.tt pakujeme na pžadvaný pčet míst ve dvjkvé sustavě. Zápis dvjkvých míst záprných řádů zapisujeme pstupně d zhra dlů, tj d desetinné čárky (pjem desetinná čárka je zde pužit brazně i pr dvjkvu sustavu). POZOR záhlavý vynecháváme Příklad: Dekadické čísl 12,35 převedeme takt: Převedeme celky tj 12 dekadických na 11 Binárních. Desetinná místa zapíšeme d tabulky Čísl Celky Místa za desetinnu pznámka řádku (přens) čárku 35 Záhlaví násbíme,35x2 1 1. Zápisvý řádek násbíme 2x,=1,4 2 1 4 Násbíme 2 (2x,4=,8) 3 8 Násbíme 2 4 1 6 Násbíme 2 5 1 2 atd 6 4 8 Řádky 3 až 6 se pakují 8 1 6 9 1 2 1 4 11 8 Zápis desetinné řásti dvjkvéh čísla (přensy řádek 1;2;3; ) tj. 11111 Tedy zápis čísla 12,35 ve dvjkvé sustavě je 11,11111 2.11.211 8 ČÍSLICOVÉ KÓDY
Příklad na prcvičení: Převeďte čísl,3125 d dvjkvé sustavy První řádky tabulky budu Čísl Celky Místa za desetinnu pznámka řádku (přens) čárku 3125 Záhlaví násbíme,3125x2 1 625 1. Zápisvý řádek násbíme 2x,625=,125 2 125 Násbíme 2 (2x,125=,25) Výsledek,1 2.11.211 9 ČÍSLICOVÉ KÓDY