Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 1 (celkem 10) Def.. 1 slabika = 1 byte = 8 bitů 1 bit = 0 ebo 1 (ve dvojkové soustavě) Zobraeí celých ísel Zobraeí ísel v poítai Ke pracováí iformace v poítai se důvodu jedoduché realiovatelosti používá obraeí íslic ebo celých ísel ve dvojkové soustavě. Pro obraeí celých ísel le v PC použít ásledujících 7 působů obraeí: a) dvojkově-desítkový tvar BCD: Biary Coded Decimal - do dvojkové soustavy se převádí jedotlivé íslice - hodota každé íslice je uložea v jedé slabice (1 slabika=8 bitů) - íslice s ejmeší vahou se uloží do slabiky s ejižší adresou - operace sítáí: paměti se vyberou ejižší řády ísel, setou se a případě se do vyššího řádu přite přeos atd. (algoritmus sítáí ísla o délce 1 slabika se od algoritmu sítáí ísel o N slabikách liší je potem kroků) Př. (1345) 10 5 4 3 1 5 4 3 1 0000 0101 0000 0100 0000 0011 0000 0010 0000 0001 Př. (74) 10 4 7 0000 0010 0000 0100 0000 0111 b) huštěý dvojkově-desítkový tvar packed BCD: Packed Biary Coded Decimal - do dvojkové soustavy se převádí jedotlivé íslice - v jedé slabice se obraí dvě íslice (pro obraeí jedé íslice jsou vyhraey 4 bity, ejvětší íslice v desítkové soustavě je 9, (9) 10 = (1001) tj. 4 bity pro obraeí jedé íslice staí). - dvojice íslic s ejmeší vahou se uloží do slabiky s ejižší adresou - íslice dělíme do dvojic od ejmeší váhy (tj. prava) - operace sítáí: paměti se vyberou ejižší řády ísel, setou se a případě se do vyššího řádu přite přeos atd. (algoritmus sítáí ísla o délce 1 slabika se od algoritmu sítáí ísel o N slabikách liší je potem kroků)
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa (celkem 10) Př. (1345) 10 45 3 01 4 5 3 0 1 0100 0101 0010 0011 0000 0001 Př. (74) 10 4 07 0100 0010 0000 0111 Po. Zobraeí améka u působu a) resp. b) je áležitostí kokrétího PC c) biárí soustava vi. miulé cvieí Teto typ obraeí je použitelý poue pro kladá ísla! d) přímý kód se amékem - íslo obraeo jako dvojice améko absolutí hodota ísla p = ± p..obra ísla v přímém kódu Zaméko: obraeo ve amékovém bitu (bit s ejvyšší vahou). Kladé íslo : ve amékovém bitu : 0 Záporé íslo: ve amékovém bitu : 1 Př. (5) 10 = 00000101 (-5) 10 = 10000101 amékový bit evýhoda: hodota obrau ísla se pro většující hodotu origiálu tohoto důvodu algoritmy sítáí/odítáí velmi složité. většuje kladá ísla mešuje áporá ísla, (4) 10 = (0000 0100) PK (-7) 10 = (1000 0111) PK (7) 10 = (0000 0111) PK (-4) 10 = (1000 0100) PK Př. V přímém kódu obrate (a osm bitů) ísla: a) 55 b) -55 Výsledek apište v šestáctkové soustavě. 55: 7 1 7 13 1 (55) 10 = (0011 0111) PK = (37) 16 13 6 1 (-55) 10 = (1011 0111) PK = (B7) 16 6 3 0 3 1 1 1 0 1
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 3 (celkem 10) NEPŘÍMÝ KÓD (doplňkový kód, iverí kód, kód s posuutou ulou) - se většováím origiálu se většuje i jeho obra - avedeí báe obraeí, která je k origiálu přitea - kladá i áporá ísla jsou obraováa v oboru kladých ísel - obraeí ahruje stejě velkou možiu kladých i áporých ísel e) doplňkový kód Kladá ísla se obraují stejě, pro áporá ísla je volea báe d = pro 0 1 d = + d obra ísla v doplňkovém kódu.poet íslic obraeí.áklad soustavy 0 Rosah obraeí je 1 Př. V doplňkovém kódu obrate (a 16 bitů) ísla: a) 55 b) -55 c) 103 d) -103 Výsledek apište v šestáctkové soustavě. (55) 10 = (0000 0000 0011 0111) DK =(0037) 16 Trik pro rychlejší výpoet při obraováí áporých ísel: 16-55 = 16-1-55+1 maximálí íslo obraitelé v biárí soustavě a 16 bitů 16-1-55: v ápise ísla 55 v biárí soustavě prohodíme 1 a 0 (-55) 10 = 1111 1111 1100 1000+1 = 1111 1111 1100 1001= (1111 1111 1100 1001) DK = (FFC9) 16 ivere doplěk Postup pro obraováí áporých ísel v doplňkovém kódu: 1. obrait kladé íslo v biárí soustavě. prohodit 1 a 0 v ápise biárího ísla 3. přiíst 1 (103) 10 = (0000 0011 1111 1111) = (03FF) 16 (-103) 10 = 1111 1100 0000 0000 +1 = (1111 1100 0000 0001) = (FC01) 16 ivere
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 4 (celkem 10) f) iverí kód podobý doplňkovému kódu, rodíl je v bái posuutí báe obraeí: -1 i = pro 0 1 i = 1 + i obra ísla v iverím kódu.poet íslic obraeí.áklad soustavy + 1 0 Rosah obraeí je + 1 1 Nula se obraí do dvou růých obraů (kladá a áporá ula) Pro obraeí áporých ísel v doplňkovém a iverím kódu řejmě platí : d = i + 1, tj. při výše popsaém triku eprovádíme krok 3 (přiteí jedotky). V itervalu eáporých ísel jsou obě obraeí (v doplňkovém a iverím kódu ) idetická. g) kód s posuutou ulou báe obraeí:, ebo 1 p = +, ebo p = 1+ p obra ísla v kódu s posuutou ulou.poet íslic obraeí.áklad soustavy Rosah obraeí je 1, ebo + 1 Př: V kódu s posuutou ulou obrate (a osm bitů) ísla: a) 55 b) -55 c) 5 +1. Výsledek apište v šestáctkové soustavě. Báe posuutí (obraeí) je 1 = 7-1. a) 7-1 +55 = 18+54=18 b) 7-1 - 55 = 18-56=7 c) 7-1+ 5 +1= 7 + 5 =160 a) b) c) 18: 91 0 7: 36 0 10000000 91 45 1 36 18 0 + 00100000 45 1 18 9 0 10100000 11 0 9 4 1 11 5 1 4 0 5 1 1 0 1 0 1 0 1 1 0 1 (18)10=(1011 0110) =(B6) 16 (7) 10 =(0100 1000) =(48) 16 (160) 10 =(1010 0000) =(A0) 16
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 5 (celkem 10) Obecě obraeí celých ísel (výše míěými 7 působy) je prováděo aprosto přesě. Rosah obraeí je dá potem íslic. Pro obraeí ísla ve dvojkové soustavě se ejastěji používá slovo o délce 8, 16, 3, ebo 64 bitů. Zobraeí ísel v pohyblivé řádové árce Zobraeí reálých ebo příliš velkých celých ísel se provádí v pohyblivé řádové árce. Čísla jsou obraea ve tvaru: kde = M E M matisa ísla, obraeá v soustavě o ákladu E.expoet.áklad pro výpoet expoetové ásti V PC je pak íslo obraováo jako dvojice (M,E). Přesost obraovaého ísla ávisí a potu íslic matisy Rosah obraeí ávisí a potu íslic expoetu Po. Základ soustavy pro obraeí expoetu i matisy se většiou volí shodý se ákladem pro výpoet expoetové ásti. Některé poítae však důvodu většeí rosahu obraitelého expoetu(a tím i obraovaého ísla) obraují matisu i expoet v jié soustavě, ež je áklad pro obraeí expoetové ásti. Např. M a E je v biárí soustavě ale v hexadecimálí. K dosažeí co ejvětší přesosti obraeí daého ísla se matisa upravuje a tv. ormovaý tvar pro který platí: 1 1 1 M < 0 M < 1 kde symbol aí sjedoceí itervalů. Kokrétí působ obraeí matisy a expoetu ávisí a typu poítae a jeho aritmetických istrukcích. Jedím používaých formátů pro obraeí ísel v pohyblivé řádové árce je formát podle stadardu IEEE 754(Istitute of Electrical ad Electroic Egieers) používaý v moderích poítaích. Reálá ísla jsou obraováa - v jedoduché přesosti (délka slova 3 bitů) - v dvojásobé přesosti (délka slova 64 bitů) - v rošířeém formátu (délka slova 80 bitů)
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 6 (celkem 10) Zobraeí reálého ísla v jedoduché přesosti: expoet 31 30 3 matisa 0 Matisa - je uložea a 3 bitech v přímém kódu se amékem - Zamékový bit matisy je oae - Kladé íslo má amékový bit ulový, u áporého ísla je v uložea 1 - Nejvyšší bit matisy je vždy 1 a eobrauje se ( matisa se ukládá poíaje druhým výamým bitem-ještě vyšuje přesost obraeí) - Myšleá desetiá teka je umístěa a ejvyšším bitem matisy - Absolutí hodota matisy se tedy obraí v itervalu 1 m < - Od ormovaého tvaru se upouští poue tehdy, když výsledek operace je v absolutí hodotě meší, ež je schope expoet obrait. Matisa se pak meší a úkor přesosti a ae se obraovat i ejvyšší bit matisy. Expoet - je ulože a 8 bitech v kódu s posuutou ulou - Báe posuutí expoetu je 1 ( =, a=8) tj. báe posuutí je 7-1=17 Zobraeí ěkterých hodot: Nula Nekoeo obraea s obraem matisy i expoetu rovým ule ( podle hodoty amékového bitu kladá/áporá ula=>ula má dvě možá obraeí v kódu IEEE 754 ) expoet =18, a hodotě matisy eáleží.( podle hodoty amékového bitu kladé/áporé ekoeo). Neormovaý tvar má hodotu expoetu ula a eulovou matisu. Číslo je uložeo ve tyřech po sobě jdoucích slabikách. Zobraeí reálého ísla ve dvojásobé přesosti: expoet matisa 63 6 5 51 0 Matisa je uložea a 5 bitech v přímém kódu se amékem. Expoet je ulože a 11 bitech v kódu s posuutou ulou s báí posuutí 103. Zobraeí reálého ísla v rošířeém tvaru: expoet Matisa 79 78 64 63 0 Matisa je uložea a 64 bitech v přímém kódu se amékem. Expoet je ulože a 15 bitech v kódu s posuutou ulou s báí posuutí 16383.
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 7 (celkem 10) Rosah obraeí ísel ve výše uvedeých formátech: Přesost Miimum Maximum Jedoduchá 38 ± 1.175 10 38 ± 3.4 10 Dvojásobá 308 ±.3 10 308 ± 1.8 10 Rošířeá 1638 ± 10 16384 ± 10 Př. Zobrate ve formátu IEEE (a 4 bytech) ásledující reálá ísla: a) -58,15 b) 69,1875 c) -0,45315 Výsledek apište v šestáctkové soustavě. Ad a) (58) 10 =(100000010) 0,15 = 0,5 0 (0,15) 10 =(0,001) 0,5 = 0,5 0 0,5 = 1,0 1 (58,15) 10 =(100000010,001) orm. tvar: 1,00000010001* 8 exp.: 7-1+8= 7 +7=10000000+111=(10000111) PN (58,15) 10 = (1100 0011 1000 0001 0001 0000 0000 0000) IEEE = = ( C 3 8 1 1 0 0 0 ) 16 Ad b) (69) 10 =(1000101) 0,1875 = 0,375 0 (0,1875) 10 =(0,0011) 0,375 = 0,75 0 0,75 = 1,5 1 0,5 = 1 1 (69,1875) 10 =(1000101,0011) orm. tvar: 1,0001010011* 6 exp.: 7-1+6= 7 +5=10000000+101=(10000101) PN (69,1875) 10 = (0100 0010 1000 1010 0110 0000 0000 0000) IEEE = = ( 4 8 A 6 0 0 0 ) 16 Ad c) 0,45315 = 0,9065 0 (0,45315) 10 =(0,011101) 0,9065 = 1,815 1 0,815 = 1,65 1 orm. tvar: 1,1101* - 0,65 = 1,5 1 exp.: 7-1-= 7-3=(01111101) PN 0,5 = 0,5 0 0,5 = 1 1 (0,45315) 10 =( 1011 1110 1110 1000 0000 0000 0000 0000) IEEE = = ( B E E 8 0 0 0 0 ) 16
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 8 (celkem 10) Příklad k procvieí: Zobrate ve formátu IEEE (a 4 bytech): (-59,5) 10 výsledek: (1100 0011 1000 0001 1100 0000 0000 0000 ) IEEE Operace ad celými ísly Mei ákladí celoíselé operace patří: sítáí odítáí ásobeí celoíselé děleí ureí bytku celoíselého děleí Celoíselé děleí - avedeme operátor div a a - pro celá ísla a,b (b 0) platí a div b = sig abs b b kde sig améko výsledku abs absolutí hodota výsledku x maximálí celé íslo meší ebo rovo x Ureí bytku celoíselého děleí - avedeme operátor mod - pro celá ísla a,b (b 0) platí a mod b = a (a div b) b Poet míst a která ísla v PC obraujeme je koeý. Možia obraitelých ísel je proto také koeá a výsledky celoíselých operací emusí být obraitelé. Při evýhodě voleém sledu operací může dojít k výamé chybě. 1.Problém přeteeí Přeteeí překroeí rosahu obraitelého ísla ( při operacích +, -, *, / ) - U operace souiu obraujeme výsledek a dvojásobý poet míst - U operace děleí může dojít k přeteeí poue při děleí ulou. - Přeteeí je techickým vybaveím poítae idikováo jako chyba (reakce systému astaveí příaku přeteeí, ebo vyvoláí přerušeí). - K přeteeí docháí také evhodým pořadím prováděí operací, kdy výsledek je sice meší ež maximálě možé obraitelé íslo(n MAX ), ale meivýsledek N MAX převyšuje. - Ze ákladích ákoů aritmetiky platí : komutativí áko eplatí: asociativí a distributiví áko Př. soustava ve které le v desítkové soustavě obrait íslo v rosahu ± 999 výpoet výrau (900+500)-800=1400-800 proběhe chybě 900+(500-800)=900-300=600 proběhe správě..problém aokrouhleí Náhodým řaeím operací ásobeí a děleí může dojít vlivem aokrouhleí k výraým chybám. apř. výra (40 80) div 64 = 300 div 64 = 50 měíme-li pořadí operací (40 div 64) 80= 0 80= 0
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 9 (celkem 10) Operace ad reálými ísly Číslo obraeé v pohyblivé řádové árce emusí být obraeo přesě - epřesost převodu mei soustavami (apř. 0,1 v biárí soustavě periodické) - omeeý poet bitů matisy Meivýsledky operací se musí většiou aproximovat. Aby se aproximace projevila v koeém výsledku co ejméě provádí se výpoty a větší poet platých míst ež a který se výsledek akoec obraí.aproximace se provádí odsekutím přebývajících bitů ebo aokrouhleím ísla. Při aproximaci odsekutím le absolutí chybu výsledku vyjádřit vtahem δ = E kde δ absolutí chyba E expoet poet míst obraeí matisy Při aproximaci aokrouhleí je chyba polovií. Porováí dvou reálých ísel podmíku if (a = b) ahradíme podmíkou if abs(a-b)< δ kde δ absolutí chyba porováí Problémy při prováděí aritmetických operací 1. Přeteeí a podteeí ísla Přeteeí i podteeí ísla se týká expoetu. Je-li hodota expoetu ísla větší ež maximálí obraitelá docháí k přeteeí Je-li hodota expoetu ísla meší ež miimálí obraitelá docháí k podteeí přeteeí podteeí přeteeí -max - mi 0 +mi +max Např. pro obraeí ísla ve formátu IEEE v pohyblivé řádové árce s jedoduchou přesostí a při achováí ormovaého tvaru platí: max = 18 mi = - 16 - max = - 18 - mi = - - 16 Nejmeší obraitelé íslo v eormovaém tvaru je 1,4 10-45. Zobraeí uly Způsob obraeí uly má vliv a prováděí operací sítáí a ásobeí ulou. Nula se obrauje jako 0 mi, kde mi je miimálí obraitelá hodota expoetu. V případě sítáí dvou ísel docháí ejprve k úpravě ísla s meším expoetem. Jeho expoet se většuje a hodotu expoetu druhého sítace a matisa se mešuje tak, aby hodota ísla byla achováa. Při mešováí matisy může dojít k jejímu aokrouhleí a tím k epřesosti obraeí sítace. Zobraíme-li ulu s miimálím expoetem, ebude se eulový sítaec upravovat a proto bude vždy platit a + 0 = a. Př. -10 + 0 = 10 + 16 = 10 + 0 10 = 10
Zobraeí ísel v poítai, áklady algoritmiace Ig. Michala Kotlíková Straa 10 (celkem 10) Při ásobeí dvou ísel se provede soui matis a souet expoetů. Při ásobeí ulou, která je vyjádřea avrhovaým působem může dojít k překroeí rosahu obraeí expoetu k podteeí. Proto algoritmy ásobeí musí teto případ odlišit a přímo vygeerovat ulový výsledek. Jestliže případ ásobeí eodlišíme, může probíhat výpoet ásledově. Př. -10 0 = 10 16 = 10 + 0 16 = 136 kde íslo 136 emusí být v rosahu obraeí expoetu. 3. Neplatost distributivího a asociativího ákoa Při vyhodocováí aritmetických výraů áleží a pořadí prováděí operací. Neplatí asociativí áko pro sítáí : Neplatí asociativí áko pro ásobeí : a + ( b + c ) ( a + b ) + c a ( b c ) ( a b ) c Např. při obraováí ísel a tři platá místa a aokrouhlováí meivýsledků a 3 platá ísla platí: a ( b c ) = 0,86 ( 0,56 0,08 ) = 0,86 0,0448 = 0,0385 ( a b ) c = ( 0,86 0,56 ) 0,08 = 0,48 0,08 = 0,0365