Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 6 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze Hana Kubátová BI-SAP 6, Aritmetika II letní semestr 2010-11
BI-SAP 6: osnova Zobrazení čísel se znaménkem Přímý, aditivní a doplňkový kód a operace sčítání a odčítání, přetečení Čísla s pohyblivou řádovou čárkou Zobrazení v řádové mřížce Provádění základních aritmetických operací Normalizovaný tvar, skrytá jednička Hana Kubátová BI-SAP 6, Aritmetika II 2
Řádová mřížka (opakování) Zobrazení čísel na počítači je limitováno (rozsahem registrů, paměť. míst, apod.) Řádová mřížka určuje formát zobrazitelných čísel (tj. definuje nejvyšší řád n a nejnižší řád - m) Příklad řádových mřížek řádová čárka n = 3, -m = 0 n = 0, -m = -3 Hana Kubátová BI-SAP 6, Aritmetika II 3
Aritmetické operace v ř.m. - chyby Někdy se lze chybám vyhnout změnou délky ř.m. rozšiřování zkracování ř.m. Př. rozšiř. 1 5 5 0 0 1 5 5 0 0 0 zkrac. Při ztrátě přesnosti můžeme velikost chyby ovlivnit způsobem zaokrouhlení zaokrouhlení nahoru/dolů zaokrouhlení s pref. sudé číslice zaokrouhlení s pref. většího čísla Hana Kubátová BI-SAP 6, Aritmetika II 4
Aritmetické operace v ř.m. (3) Zaokrouhlení dolů (oříznutí) 0 1 2 5 0 1 2 Zaokrouhlení nahoru + 0 1 2 5 0 1 3 0 0 1 0 1 3 5 Hana Kubátová BI-SAP 6, Aritmetika II 5
Aritmetické operace v ř.m. Zaokrouhlení s preferencí sudé číslice 0 1 2 4 0 1 2 0 1 2 5 0 1 2 0 1 2 6 0 1 3 Zaokrouhlení s preferencí většího čísla 0 1 2 4 0 1 2 0 1 2 5 0 1 3 Hana Kubátová BI-SAP 6, Aritmetika II 6
Řádová čárka vzhledem k ř.m. Pevně definovaná pozice čísla s pevnou řádovou čárkou (fixed-point) nejpoužívanější rezervováno pro znaménko integer fractional Řádová čárka je definována posunem vůči definované pozici čísla s pohyblivou řádovou čárkou (floating-point) rezervováno pro znaménko Počáteční pozice řád. čárky, číslo ve posun vůči níž je vztažen posun. zlomkovém řád. čárky Hana Kubátová tvaru BI-SAP 6, Aritmetika II 7
Zobrazení čísel se znaménkem Standardní polyadické soustavy pouze nezáporná čísla Zobrazení záporných čísel číselné kódy popisují transformaci z omezené množiny celých čísel do omezené množiny nezáporných čísel Nejpoužívanější číselné kódy: přímý aditivní doplňkový Hana Kubátová BI-SAP 6, Aritmetika II 8
Přímý kód Nejvyšší řád ř.m. představuje znaménko, zbytek ř.m. je absolutní hodnota Znaménko reprezentováno číslicí: Znázornění zobrazení: P(X) M + 0, - 1 +/- absolutní hodnota ½M X < ½M ½M X ½M Hana Kubátová BI-SAP 6, Aritmetika II 9 0
Příklady přímý kód M = 1000... tzn. 3bitová čísla X P(X) +0 0 0 0 kladná nula +1 0 0 1 +2 0 1 0 +3 0 1 1-0 1 0 0 záporná nula -1 1 0 1-2 1 1 0-3 1 1 1-25 10 P 1 0 2 5 +101 2 P 0 1 0 1 +0,05 10 P P 0 0 5 0-0,11 2 1 1 1 0 Hana Kubátová BI-SAP 6, Aritmetika II 10
Sčítání a odčítání Pracuji zvlášť se znaménkem a absolutní hodnotou Absolutní hodnota je nezáporné číslo Příklad pro 3 bitová nezáporná čísla: B=101 B=010 B + B = 111 = 1000 1 = M 1 B = B + 1 M A B = A + B + 1 M Aby byl výsledek správně, musí být možné odečíst modul (tj. carry)! Hana Kubátová BI-SAP 6, Aritmetika II 11
Sčítání a odčítání v přímém kódu A + B, A B, výsledek ulož do A kde A ~ (za, aa), B ~ (zb, ab) z znaménko, a absolutní hodnota Pokud nevyjde přenos, vyšel záporný výsledek, který neumíme zobrazit, proto je třeba negovat znamenko a odečíst výsledek od 0. Hana Kubátová BI-SAP 6, Aritmetika II 12
Sčítačka pro nezáporná čísla S = A + B. jen někdy A= a 2 a 1 a 0 B= b 2 b 1 b 0 S A + B Hana Kubátová BI-SAP 6, Aritmetika II 13
Sčítačka pro nezáporná čísla p i... přenos do řádu i...carry q i... přenos z řádu i M = 8 = 2 3 = 1000 2 =(111 + 1) 2 S = A + B je-li q* = 0 A + B M je-li q* = 1 zde: q* 2... přeplnění...overflow Hana Kubátová BI-SAP 6, Aritmetika II 14
Odčítačka pro nezáporná čísla R = B - A, je-li q* = 1 p*= 1... horká jednička hot one Hana Kubátová BI-SAP 6, Aritmetika II 15
Odčítání sčítání... přenos q*...carry odčítání... výpujčka v*...borow q* = v* q* = 1 v* = 0 A B 0 q* = 0 v* = 1 A B < 0 Hana Kubátová BI-SAP 6, Aritmetika II 16
Sčítačka-odčítačka pro nezáporná čísla složitější řízení, protože detekce přeplnění záleží na operaci sčítání... přeplnění ní (zde přenos) pro q*=1 odčítání... přeplnění (zde výpůjčka) pro v*=1, q*=0 nakreslit na tabuli Hana Kubátová BI-SAP 6, Aritmetika II 17
Aditivní kód Též označovaný jako kód s posunutou nulou Formální definice: A(X) = X + K pro -K X < M - K K vhodná konstanta často se volí: K = ½ M M K A(X) Hana Kubátová BI-SAP 6, Aritmetika II 18 -K 0 M-K X
Příklady aditivní kód -25 10 A 4 9 7 5 +101 2 A K=5000 K=1000 2 1 1 0 1 +0,05 10 A A 1 0 5 0-0,11 2 K=1,000 K=1,000 2 0 0 1 0 Hana Kubátová BI-SAP 6, Aritmetika II 19
Doplňkový kód Definice: D(X) = X, je-li X >= 0 M + X, je-li X < 0 D(X) M Příklad napsat všechna 3 bitová čísla (M = 1000, ε = 1, l = 3) ½M X D(X) 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1-4 1 0 0-3 1 0 1-2 1 1 0-1 1 1 1 ½M ½ M X < ½ M Znaménko je určeno prvním bitem zleva, ale tento bit je organickou součástí obrazu!!! Hana Kubátová BI-SAP 6, Aritmetika II 20 ½M X
Doplňkový kód - pokračování Obraz záporného čísla X je doplňkem jeho hodnoty do modulu M řádové mřížky Př. -25 10 D 9 9 7 5 +101 2 D 0 1 0 1 +0,05 10 D D 0 0 5 0-0,11 2 1 0 1 0 Hana Kubátová BI-SAP 6, Aritmetika II 21
Odčítání v doplňkovém kódu Příklad pro 3 bitová nezáporná čísla (opakování): V doplňkovém kódu: B=101 B=010 A B = A + (-B) D(B) + D(-B) = B + (-B) + M = M B + B = 111 = 1000 1 = M 1 B = B + 1 M A B = A + B + 1 M Správný výsledek musím mít možnost odečíst modul, Musí vyjít přenos!! D(-B) = M - D(B) D(-B) = D(B) + 1 A B = D(A) + D(B) + 1 detekce přeplnění je stejná jako u sčítání Hana Kubátová BI-SAP 6, Aritmetika II 22
Sčítání a odčítání v doplňkovém kódu D(A) + D(B) D(A + B) 1 A 0 B 0 A + B A + B 2 A 0 B < 0 A < 0 B 0 A + B + M A + B A + B + M 3 A < 0 B < 0 A + B + M + M A + B + M D(A + B) = D(A) + D(B) D(A) + D(B) M Sečtou se obrazy a ignoruje se přenos!!! Příklady viz tabule a cvičení Hana Kubátová BI-SAP 6, Aritmetika II 23
Přeplnění Přeplnění (overflow) není přenos (carry)!!!!! D(A) + D(B) 3 2xM Přeplnění: + + + - - + - + 3 2 2 M 1 Poznáme podle cifry v nejvyšším řádu + M 0 M 1 A + B Hana Kubátová BI-SAP 6, Aritmetika II 24
Přeplnění blok sčítačky pro a b p q s 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 nejvyšší řád Přeplnění: + + + - - + - + Overflow = p xor q Hana Kubátová BI-SAP 6, Aritmetika II 25
Sčítačka-odčítačka v doplňkovém kódu (včetně detekce přeplnění) Přeplnění: + + + - tzn. v nejvyšším řádu sčítačky bude: a=0 b=0 s=1 nebo p=q a=1 b=1 s=0 over = p nebo také: - + - + over = abs + q abs s i a b p q S 0 0 0 0 0 0 1 0 0 1 0 1 2 0 1 0 0 1 3 0 1 1 1 0 4 1 0 0 0 1 5 1 0 1 1 0 6 1 1 0 1 0 7 1 1 1 1 1 Hana Kubátová BI-SAP 6, Aritmetika II 26
Hana Kubátová BI-SAP 6, Aritmetika II 27
Sčítačka-odčítačka v doplňkovém kódu (včetně detekce přeplnění) Hana Kubátová BI-SAP 6, Aritmetika II 28
Sčítačka-odčítačka v doplňkovém kódu 8 bitová S = 1... odčítej (subtract) c out... přenos (Carry) c 0... horká jednička over.. přetečení (overflow) zde není zakresleno Hana Kubátová BI-SAP 6, Aritmetika II 29
Sčítačka-odčítačka -demo http://www.ecs.umass.edu/ece/koren/arith/ simulator/add/lookahead/ http://www.seas.upenn.edu/~ese201/lab/c arrylookahead/carrylookaheadf01.html Hana Kubátová BI-SAP 6, Aritmetika II 30
NOT-AND-OR Úplná sčítačka (full adder) NAND-NAND-NAND FA q ss s poloviční sčítačka (half adder) HA S = a xor b Q = a.b Hana Kubátová BI-SAP 6, Aritmetika II 31
Predikce přenosů NAND-NAND-NAND NOT-AND-OR s = ( a b) p q = ab + p( a b) G = ab P = a b Přenos vzniká (Generate) Přenos se šíří (Propagate) Hana Kubátová BI-SAP 6, Aritmetika II 32
Predikce přenosů Hana Kubátová BI-SAP 6, Aritmetika II 33
Sčítačka-odčítačka v procesoru Hana Kubátová BI-SAP 6, Aritmetika II 34
Pohyblivá řádová čárka Čísla s pevnou řádovou čárkou mají výrazně omezený rozsah Př. z = 2, délka ř.m. l = 32 (tj. 32-bitové číslo) max. celé číslo A < 2 32 < 5 10 9 min. zlomkové číslo A > 2-32 > 2 10-9 Pro zvětšení rozsahu přidáme exponent e X z e odpovídá posunu řádové čárky v čísle X o e čísla s pohyblivou řádovou čárkou Hana Kubátová BI-SAP 6, Aritmetika II 35
...pohyblivá řádová čárka Řádová mřížka má 2 části (podmřížky): mantisa (m) - informace o hodnotě čísla, často zlomkový tvar exponent (e) - informace o pozici řád. čárky, celé číslo m i e používají kódy pro zobrazení záporných čísel Ukázky možných formátů ř.m. D(M) D(e) Př. (-25 10 2 ) 10 9 9 7 5 0 0 4 ± A(e) m Př. (0,02 10-5 ) 10 0 4 9 5 0 2 0 Hana Kubátová BI-SAP 6, Aritmetika II 36
...pohyblivá řádová čárka Normalizovaný tvar je tvar čísla, kdy už nelze mantisu posunout více doleva zjednodušuje aritmetické operace Normalizovaný tvar operandů nezaručí normalizovaný tvar výsledku normalizace Př. tj. úprava výsledku na normalizovaný tvar nutno provádět po každé operaci 0 5 0 0 2 5.. nenormaliz. tvar.. 0 0 2 5 0 0 0 4 9 2 5 0 normalizovaný tvar... 2 5 0 0 9 8 A = 0,025 10 Hana Kubátová BI-SAP 6, Aritmetika II 37
...pohyblivá řádová čárka Skrytá jednička předpokl. z = 2, normaliz. tvar, M přímý kód, M 0, A(e) 0 v nejvyšším řádu mantisy bude vždy 1 tuto 1 můžeme skrýt (tj. vynechat ze zápisu čísla v ř.m.) A = 1,0 2... 1 0 0 0 1 0 0 0!!! A(e) = e 2-11 2!!! 0 1 0 0 0 0 0 V případě A(e) = 0 se skrytá jednička nepoužívá!!! A = (2-3 ) 2... 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 A = 0 2... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Hana Kubátová BI-SAP 6, Aritmetika II 38
ANSI/IEEE Std. 754-1985 znaménko exponent mantisa 32 b 1b 8b 23 (24)b exponent aditivní kód, K=127 mantisa přímý kód, M <2 64 b 1b 11b 52 (53)b 32 b: ± 8b e+127 8b 32 bitů 24b ± g f m Dvojková čárka (pro e i m) 23b Hana Kubátová BI-SAP 6, Aritmetika II 39
Pohyblivá řádová čárka e M A 0 = 0 0 0 0 (-1) s M 2-126 1..254 - (-1) s (M + 1) 2 e-127 255 = 0 (-1) s 255 0 NaN (Not a Number) Skrytá jednička! Hana Kubátová BI-SAP 6, Aritmetika II 40
pohyblivá řádová čárka Např. -58 10 = -11 1010 2 = (-1,1101 0 x 10 101 ) 2 m = 1,1101 0 f = 1101 00...0 e = 101 g = 1000 0100... tzn. 127+5 1 1000 0100 1101 0000 00... 0 C 2 6 8 0 0 0 0 v little endian je tedy postupně uloženo ve slabikově organizované paměti: adr1 00 adr2 00 adr3 68 adr4 C2 Hana Kubátová BI-SAP 6, Aritmetika II 41
pohyblivá řádová čárka adr1 00 adr2 00 adr3 68 adr4 43 4 3 6 8 0 0 0 0 0 100 0011 0110 1 000 0 00... 0 0 10000110 1101000 0 00... 0 zn exponent mantisa se skrytou 1 f = 1101 00...0 m = 1,1101 0 g = 1000 0110 e = 111.. tzn. 127+7 (128+6) (+1,1101 0 x 10 111 ) 2 = 11101000 2 = 232 10 Hana Kubátová BI-SAP 6, Aritmetika II 42
Aritmetika v pohyblivé ř.č. Aritmetické operace: sčítání/odčítání: Srovnat exponenty a sečíst/odečíst mantisy. násobení: Sečíst exponenty a vynásobit mantisy. dělení: Odečíst exponenty a vydělit mantisy. porovnání: Srovnat exponenty a porovnat mantisy. posuv: Posunem mantisy nebo zvětš./zmenš. exponentu. Normal. tvar operandů nezaručí normal. tvar výsledku normalizace tj. úprava výsledku na normal. tvar nutno provádět po každé operaci Hana Kubátová BI-SAP 6, Aritmetika II 43
...pohyblivá řádová čárka Poznámka spočtěte doma!!! Příklad 1: 16bitové číslo Y je obrazem čísla X v pohyblivé řádové čárce. Prvních 12 bitů (zleva) obrazu Y je obrazem D(M) mantisy M v doplňkovém kódu; modul řádové mřížky pro mantisu je roven 2, tzn.: -1 <= M < 1. Zbývající 4 bity jsou rovny exponentu E zvýšenému o 8 (aditivní kód) - jsou rovny A(E) = E+8. Princip skryté jedničky není použit! Určete hodnotu čísla X, je-li Y = 0F0A (šestnáctkově)! Má obraz Y normalizovaný tvar? Pokud nemá, najděte obraz čísla X v normalizovaném tvaru! Hana Kubátová BI-SAP 6, Aritmetika II 44
...pohyblivá řádová čárka Poznámka spočtěte doma!!! Příklad 2: 16bitové číslo Y je obrazem čísla X v pohyblivé řádové čárce. První bit (zleva) je znaménko mantisy, následuje 4bitový exponent zvětšený o 7 (aditivní kód). Zbývajících 11 bitů je použito k uložení absolutní hodnoty mantisy při využití principu skryté jedničky. Modul řádové mřížky pro absolutní hodnotu mantisy je roven 2 tzn. -2 < M < 2. Určete hodnotu čísla X, jeli Y=ED00 (šestnáctkově). K číslu X přičtěte 1000 0010,1 (dvojkově) a výsledný součet uložte ve stejném formátu jako číslo X. Hana Kubátová BI-SAP 6, Aritmetika II 45
Úloha: Zapište v normalizovaném tvaru. Poznámka spočtěte doma!!! Předpokládejte délku délku ř.m. l = 12, přitom délka podmřížky exponentu je l e = 4. Exponent v aditivním kódu, mantisa v přímém kódu, aditivní konstanta pro exponent je 8. Skrytá jednička není použita. 1. -(1010,11 2 ) 2. 7,375 10 3. 13,C 16 4. -(46,875 10-2 ) 10 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 Hana Kubátová BI-SAP 6, Aritmetika II 46
Příklad: Sčítání v pohyblivé ř.č. Zapište čísla 3,5 10 a 0,625 10 v normalizovaném tvaru a pak je sečtěte. 3,5 10 = 11,1 2 = 0,111 2 2 2 0,625 10 = 0,101 2 2 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 3,5 10 + 0,625 10 = 0,111 2 2 2 + 0,101 2 2 0 = = (0,111 2 + 0,00101 2 ) 2 2 = = (1,00001 2 ) 2 2 = 0,100001 2 2 3 + 0 1 0 1 1 1 0 0 0 0 1 0 Hana Kubátová BI-SAP 6, Aritmetika II 47
Příklad: Násobení v pohyblivé ř.č. Zapište čísla 3,5 10 a 0,625 10 v normalizovaném tvaru a pak je vynásobte. 3,5 10 = 0,111 2 2 2 0,625 10 = 0,101 2 2 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0,111 2 0,101 2 0,0111 2 0,00000 2 0,000111 2 + + 0 1 0 1 0 1 0 0 0 1 1 0 0,100011 2 Hana Kubátová BI-SAP 6, Aritmetika II 48
Úloha: Spočítejte v pohyblivé ř.č. Předpokládejte délku délku ř.m. l = 12, přitom délka podmřížky exponentu je l e = 4. Exponent v aditivním kódu, mantisa v přímém kódu. 1.10,375 10 0,125 10 2.13,625 10 + 1,375 10 3.4,C 16-3 16 4.(-0,40625 10 2-3 ) (-0,28125 10 ) Hana Kubátová BI-SAP 6, Aritmetika II 49
Úloha: Spočítejte v pohyblivé ř.č. 1. 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 2. 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 + 0 1 1 0 0 1 1 1 1 0 0 0 3. 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 + 0 1 0 0 1 1 1 1 0 0 0 0 4. 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 Hana Kubátová BI-SAP 6, Aritmetika II 50
Alfanumerické kódy Hana Kubátová BI-SAP 6, Aritmetika II 51
Hana Kubátová BI-SAP 6, Aritmetika II 52