E. Pohyblivářádováčárka pevná a pohyblivá řádová čárka formát US Air Force MIL-STD-1750A základní operace normalizace přetečení a nenaplnění formátbflm 1 přímý kód sčítání a odčítání násobení, dělení a posuvy obvody pro posuv aditivní kód sčítání a odčítání formátbflm 2 formát ANSI/IEEE Std 754-1985 JPO 2005/6 c A. Pluháček 12.4.2006
pevná a pohyblivá řádová čárka řádová mřížka(dosud uvažovaná)... pevná řádová čárka = omezený rozsah čísel změna rozsahu(ale nikoliv změna přesnosti!): vhodné(konstantní) měřítko proměnné měřítko(mění se podle potřeby) pohyblivá řádová čárka (M, E) A=M z E M mantisa... Jakéčíslice? E exponent nebo charakteristika... Kam umístit čárku? znaménko(a) = znaménko(m) JPO 2005/6 E 1 c A. Pluháček 12.4.2006
pohyblivá řádová čárka příklad formátu Příklady 1 a 2:(US Air Force MIL-STD-1750A) 24 bitů D (M) 8bitů D (E) dvojková čárka dvojková čárka D (M)... doplňkovýkód,modul Z=2, t.j.2 0+1 D (E)... doplňkovýkód,modul Z=256, t.j.2 7+1 1. A A8000003 16 = 101010000...000000011 2 D (M)=1,0101 2 M= 0,1011 2 D (E)=11 2 E=11 2 =3 10 A = 0,1011 2 3 10 = 101,1 2 = 5,5 10 2. A 580000FF 16 = 010110000...011111111 2 D (M)=0,1011 2 M=0,1011 2 D (E)=11111111 2 E= 1 2 = 1 10 A=0,1011 2 1=0,01011 2 =0,343750 10 JPO 2005/6 E 2 c A. Pluháček 12.4.2006
základní operace i násobení a dělení: M 1 z E 1 M 2 z E 2 = M 1 M 2 z E 1+E 2 základní princip(pouze!): M 1 z E 1 M 2 ze 2 = M 1 M 2 z E 1 E 2 (M 1, E 1 ) (M 2, E 2 )=(M 1 M 2, E 1 +E 2 ) (M 1, E 1 ) /(M 2, E 2 )=(M 1 /M 2, E 1 E 2 ) sčítání: M 1 z E 1 + M 2 z E 2=? JPO 2005/6 E 3 c A. Pluháček 12.4.2006
základní operace ii Příklad 3: A F5000006 16 = 111101010...000000110 2 D (M)=1,1110101 2 M= 0,0001011 2 D (E)=110 2 E=110 2 =6 10 (MIL-STD-1750A) A = 0,0001011 2 6 10 = 101,1 2 = 5,5 10 F5000006 16 5,5 10 A8000003 16 5,5 10 vizpř.1 obecně: M z E = M z j z E j = M j z E j,popř. M z E = M z j z E+j = M j z E+j jinak: (M, E)=(M j, E j), popř. (M, E)=(M j, E+j) } M j?ztrátupřesnosti?? platnost vztahů? M j?přeplnění? JPO 2005/6 E 4 c A. Pluháček 12.4.2006
základní operace iii sčítání(2): úprava na stejný exponent (M 1, E 1 )+(M 2, E 2 )=(M 1, E)+(M 2, E)= =(M 1 + M 2, E), neboť M 1 ze +M 2 ze = (M 1 + M 2 ) ze Pokud je to možné, provádět posuv mantisy příslušející většímu exponentu vlevo(a tento exponent snižovat). Není-li to již možné, provádět posuv mantisy příslušející většímu exponentu vpravo(a tento exponent zvyšovat). zjednodušení algoritmu vyloučit posuv mantis vlevo, tzn. připustit pouze normalizovaný tvar: mantisa je posunuta co nejvíce vlevo, popř. exponent je nejmenší možný JPO 2005/6 E 5 c A. Pluháček 12.4.2006
základní operace iv Příklad 4: A8000003 16 normalizovanýtvarčísla 5,5 10 (př.1) F5000006 16 nenormalizovanýtvarčísla 5,5 10 (př.3) F5000006 16 =111101010...000000110 2 obrazmantisyvdoplňkovémkódu=11110101... možný aritmetický posuv o 3 místa vlevo (MIL-STD-1750A) sčítání(3): srovnat na větší z exponentů: M 1 z E 1 + M 2 z E 2 =(M 1 z E 1 E 2 + M 2 ) z E 2 =(M 1 + M 2 z E 2 E 1 ) z E 1 (M 1, E 1 )+(M 2, E 2 ) =(M 1 (E 2 E 1 )+M 2, E 2 ) =(M 1 + M 2 (E 1 E 2 ), E 1 ) odčítání analogicky: (M 1, E 1 ) (M 2, E 2 )=(M 1 (E 2 E 1 ) M 2, E 2 ) =(M 1 M 2 (E 1 E 2 ), E 1 ) JPO 2005/6 E 6 c A. Pluháček 12.4.2006
rozklad operandů a složení výsledku před vlastní operacíjetřeba operandyrozložit po operací je třeba výsledek složit Příklad 5: (MIL-STD-1750A) 50000004 10 40000001 1 E 1 =4 E 2 =1 E 1 > E 2 M 1 =0,101 2 M 2 =0,1 2 E 1 E 2 =3 M 1 =0,101 2 M 2 = M 2 3 M 2 =0,0001 2 E= E 1 M=0,101+0,0001=0,1011 2 E=4 01011000...0000 00000100 2 =58000004 16 11 JPO 2005/6 E 7 c A. Pluháček 19.4.2006 (opraveno)
Příklad 6: úpravy řádové mřížky 60000002 3 40000002 2 E 1 = E 2 =2 M 1 =0,11 2 M 2 =0,1 2 E=2 (MIL-STD-1750A) 0,11+0,1=1,01=D (M) M <0 špatně! rozšířená řádová mřížka pro mantisu: 00,11+00,1=01,01=D (01,01 2 ) mantisa: 01,01 1=00,101 pozkrácení:0,101 exponent(zvýšenío1): 2+1=3 výsledek: 50000003 5=3+2 rozšířenířádovémřížky,posuv(nebo neposuv )anásledné zkrácení lze provést mimo registry, tzn. v kombinačních obvodech(sčítačka, obvod pro posuv a multiplexor) alternativní řešení: posuv operandů vpravo a příslušná úprava výsledku JPO 2005/6 E 8 c A. Pluháček 12.4.2006
normalizace Příklad 7: (MIL-STD-1750A) 40000005 16 8800004 15 E 1 =5 E 2 =4 E 1 > E 2 D (M 1 )=00,1000 D (M 2 )=11,0001 E 1 E 2 =1 posuv D (M 2 )o1místovpravo D (M 2 ) 11,10001 E= E 1 =5 00,1000000... 0 11,1000100... 0 00,0000100... 0 04000005 1 normalizovaný tvar: 40 00 00 01 1 Na konci každé operace je nutno výsledek převést na normalizovaný tvar normalizace. Pak lze výsledek použít jako operand. JPO 2005/6 E 9 c A. Pluháček 12.4.2006
normalizovaný obraz nuly Příklad 8: 654321FB 0,0654321 16 0000000 0 E 1 = 5 E 2 =0 E 1 < E 2 (MIL-STD-1750A) 0,11001010100001100100001 5= E= E 2 =0 =0,0000011001010100001100100001 přičíst0asložit výsledek=032a1900 0,0654300 16 0,0654300 0,0654321 + 0 špatně! Nula nesmí mít větší exponent než jiné číslo! normalizovaný obraz nuly nejmenší možný exponent Př. (MIL-STD-1750A): 0 00000080 D (E)=80 16 E= 128 10 mantisu lze posouvat, ale exponent nelze snižovat JPO 2005/6 E 10 c A. Pluháček 12.4.2006
přetečení a nenaplnění výsledekoperace: (M, E) A=M z E požadováno: E min E Emax např. 128 E 127 E > Emax přeplnění(nebo přetečení) angl. overflow E < E min nenaplnění(nebopodtečení) angl. underflow E z E 0 A 0 JPO 2005/6 E 11 c A. Pluháček 12.4.2006
jiný formát Příklad: formát označovaný dále BFLM P(M) A(E) M dvojkováčárka(pro Mipro E) mantisa: přímý kód znaménko a absolutní hodnota exponent: aditivní kód(kód s posunutou nulou) pozn.: FormátBFLMjejakýsi kříženec formátuibm-360a dále diskutovaného formátu ANSI/IEEE Std 754-1985. JPO 2005/6 E 12 c A. Pluháček 12.4.2006
přímý kód Přímý kód: P(X) ± absolutní hodnota znaménkový bit: 0 + 1 Z 1 2 Z Př.: X P(X) +0,00 000 kladná +0,01 001 nula +0,10 010 +0,11 011 0,00 100 záporná 0,01 101 nula 0,10 110 0,11 111 1 2 Z 0 1 2 Z X JPO 2005/6 E 13 c A. Pluháček 12.4.2006
A+B A nebo A B A sčítání a odčítání v přímém kódu sčítání ne za=zb ano aa+ ab aa přenos 1 za... znaménko A aa... A zb... znaménko B ab... B přeplnění odčítání ano za=zb ne aa ab aa 0 1 přenos 0 0 aa aa za za konec JPO 2005/6 E 14 c A. Pluháček 12.4.2006
násobení, dělení a posuvy v přímém kódu znaménko: +++ + + + 0 0 0 0 1 1 1 0 1 1 1 0 XOR absolutní hodnota nezáporné číslo násobení a dělení nezáporných čísel již bylo diskutováno aritmetický posuv: znaménkový bit se nemění; posouvá se část obsahující absolutní hodnotu; vypadne-li nenulový bit při posuvu doleva, dochází k přeplnění; vypadne-li nenulový bit při posuvu doprava, dochází k ztrátě přesnosti JPO 2005/6 E 15 c A. Pluháček 12.4.2006
obvody pro posuv obvodangl.nazývaný barrelshifter JPO 2005/6 E 16 c A. Pluháček 12.4.2006
Aditivní kód: A(X)=X+ K K= 1 2 Z K= 1 2 Z ε aditivní kód A(X) Z K K X < Z K Zde budeme uvažovat K= 1 2 Z 1,tzn. A(X)=X+ 1 2 Z 1 takže 1 2 Z+1 X 1 2 Z první bit znaménko K 0 Z K Př.: X A(X) -3 000-2 001-1 010 0 011 1 100 2 101 3 110 4 111 X JPO 2005/6 E 17 c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu i A(A+B)=A(A)+A(B) K A(A B)=A(A) A(B)+ K A(A+B)=A(A)+A(B) 1 2 Z+1 A(A B)=A(A) A(B)+ 1 2 Z 1 1 2 Z +1 2 Z (mod Z) 1 2 Z 100...00 1 2 Z +1 2 Z přeplnění: (mod Z) negacebituvnejvyššímřádu sčítání: stejná znaménka sčítanců a jiné znaménko výsledku odčítání: znaménka menšence a menšitele se liší a liší se znaménka menšence a výsledku (odvození analogické jako u doplňkového kódu) JPO 2005/6 E 18 c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu ii a n b n p n q n s n 0 0 0 0 0 q n = s n 0 0 1 0 1 q n s n 0 1 0 0 1 q n s n 0 1 1 1 0 q n s n 1 0 0 0 1 q n s n 1 0 1 1 0 q n s n 1 1 0 1 0 q n s n 1 1 1 1 1 q n = s n over=q n s n JPO 2005/6 E 19 c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu iii JPO 2005/6 E 20 c A. Pluháček 12.4.2006
vlastnosti formátu BFLM P(M) A(E) M dvojkováčárka(pro Mipro E) obraz nejmenšího možného exponentu = 0 normalizovaný obraz nuly = nula (se znaménkem plus či mínus) porovnání: A B A B 0 obrazyčísel AaBlzeodečístjakočísla vpřímémkóduavpevnéřádovéčárce normalizovaný tvar nenulového čísla má v nejvyšším řádu M vždyjedničku tulzezezápisuvypustit lze použít princip skryté jedničky JPO 2005/6 E 21 c A. Pluháček 12.4.2006
formát ANSI/IEEE Std 754-1985 i ANSI/IEEE Std 754-1985 jednoduchý formát 32b 8b E+127 24b ± M dvojkováčárka(pro Mipro E) 8b 23b s g f g=0af=0 ( 1) s 0 g=0af 0 ( 1) s f 2 126 g 1, 254 ( 1) s (1+f) 2 g 127 g=255af=0 ( 1) s g=255af 0 NaN JPO 2005/6 E 22 c A. Pluháček 12.4.2006
ANSI/IEEE Std 754-1985 ii Příklad: 5,5 10? 5,5 10 =101,1 2 =(1,011 10) 2 f=0,011000...000 2 g=(127+2) 10 =10000001 2 obrazčísla 5,5 10 : 110000001011000...000 2 = =11000000101100000000000000000000 2 = =C0B00000 16 JPO 2005/6 E 23 c A. Pluháček 12.4.2006
ANSI/IEEE Std 754-1985 iii ANSI/IEEE Std 754-1985 dvojitý formát 64b g... 11b f... 52b g=0af=0 ( 1) s 0 g=0af 0 ( 1) s f 2 1022 g 1, 2046 ( 1) s (1+f) 2 g 1023 g=2047af=0 ( 1) s g=2047af 0 NaN JPO 2005/6 E 24 c A. Pluháček 12.4.2006