B. Sčítání,odčítání adoplňkovýkód číselné soustavy a řádová mřížka sčítání a odčítání racionálních a celých čísel úplná a poloviční sčítačka sčítačka s postupným šířením přenosu a s predikcí přenosů sčítání v rámci řádové mřížky odčítačka převod odčítání na sčítání doplňkový kód sčítání a odčítání v doplňkovém kódu kombinační část jednoduché aritmetické jednotky aritmetický posuv v doplňkovém kódu rozšiřování řádové mřížky v doplňkovém kódu JPO 2005/6 c A. Pluháček 19.3.2006
řádová mřížka n... nejvyššířád m... nejnižšířád A a n a n 1... a 0, a 1... a m A=a n z n + a n 1 z n 1 +...+a 0 + a 1 z 1... a m z m z... základčíselnésoustavy Z= z n+1 modulřádovémřížky není zobrazitelný!!! ε=z m jednotkařádovémřížky nejmenší kladné zobrazitelné číslo zobrazitelnáčísla A: 0 A=k ε < Z, kjeceléčíslo JPO 2005/6 B 1 c A. Pluháček 19.3.2006
ε <1? A+B C? sčítání racionálních čísel A = A/ε=A z m jeceléčíslo Př.: z=10, Z=10=10 n+1, ε=0,01=10 m n=0, m=2 (neboli m= 2) A=1,23 A =1,23 100=123 A z m = A m posuvommíst,ato: vlevo vůči řádové čárce nebo řádovéčárkyvzápise Avpravo } 1. A A = A/ε B B odstranění řádové čárky = B/ε 2. C = A + B 3. C C= C ε vrácenířádovéčárky Př.: 1,23+4,56=? 1,23 123, 4,56 456 123+456=579 579 5,79 JPO 2005/6 B 2 c A. Pluháček 19.3.2006
sčítání a odčítání racionálních a celých čísel sčítání racionálních čísel sčítání celých čísel analogicky: odčítání racionálních čísel odčítání celých čísel dále pouze sčítání a odčítání celých čísel ve dvojkové soustavě z=2 ε=1 a i bit1.sčítance Avřádu i b i bit2.sčítance Bvřádu i s i bitsoučtu Svřádu i p i přenosdořádu i q i přenoszřádu i přenos angl.carry JPO 2005/6 B 3 c A. Pluháček 19.3.2006
úplná a poloviční sčítačka i úplná sčítačka 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 s = a b p= = abp+abp+ + abp+abp q=m 3 (a, b, p)= = ab+ap+bp= = ab ap bp= = ab+(ap bp) poloviční sčítačka(půlsčítačka) a b q s 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 s = a b = ab+ab q = a b JPO 2005/6 B 4 c A. Pluháček 19.3.2006
úplná a poloviční sčítačka ii sčítačka s postupným šířením přenosu S= A+B+ p 0 q n Z n=3 Z=16 A a 3 a 2 a 1 a 0 B b 3 b 2 b 1 b 0 S s 3 s 2 s 1 s 0 p i+1 = q i JPO 2005/6 B 5 c A. Pluháček 19.3.2006
sčítačka s predikcí přenosů (angl. carry look-ahead adder) i q= ab+ap+bp } a=1ab=0nebo q= p!vustálenémstavu! a=0ab=1 zpoždění se kumulují frekvence hodinových pulsů P i = a i b i G i = a i b i srov. výstupy půlsčítačky! přenos prochází řádem i přenosvřádu ivzniká generujesevněm q 0 = p 1 = G 0 + P 0 p 0 q 1 = p 2 = G 1 + P 1 p 1 q 1 = p 2 = G 1 + P 1 G 0 + P 1 P 0 p 0 q 2 = p 3 = G 2 + P 2 G 1 + P 2 P 1 G 0 + P 2 P 1 P 0 p 0 atd. pozn.:alternativnělzepoužít P i = a i + b i JPO 2005/6 B 6 c A. Pluháček 19.3.2006
sčítačka s predikcí přenosů ii predikce: p 1 = G 0 + P 0 p 0 p 2 = G 1 + P 1 G 0 + P 1 P 0 p 0 p 3 = G 2 + P 2 G 1 + P 2 P 1 G 0 + P 2 P 1 P 0 p 0 p 4 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 G 0 + + P 3 P 2 P 1 P 0 p 0 JPO 2005/6 B 7 c A. Pluháček 19.3.2006
sčítačka s predikcí přenosů iii sčítačka s predikcí přenosů na bázi půlsčítaček JPO 2005/6 B 8 c A. Pluháček 19.3.2006
sčítání v rámci řádové mřížky i Výstupsčítačky: S= A+B+ p 0 q n Z Nechť p 0 =0 (nebo úplná sčítačka v řádu 0 je nahrazena půlsčítačkou): S= A+B q n Z Sselišíod A+Bonásobek Z S A+B (mod Z) grafické znázornění(obdoba ciferníku na hodinách): 0101+0100=01001 1001 JPO 2005/6 B 9 c A. Pluháček 19.3.2006
sčítání v rámci řádové mřížky ii 0101+1110=10011 0011 průchodnulou přenosznejvyššíhořádu q n =1 v tomto případě(sčítání čísel bez znaménka): q n =1 A+B Z (Z=10000 2 =16 10 ) q n =1 přeplnění(přetečení) překročenírozsahu obecně však:!!! přenos přeplnění(přetečení)!!! přeplnění angl. overflow JPO 2005/6 B 10 c A. Pluháček 19.3.2006
odčítačka úplná odčítačka a b v u r 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 r = a b v= = abv+ abv+ abv+abv u== ab+av+bv v i u i výpůjčkaprořád i výpůjčkazřádu i atd.-podobnějakousčítání výpůjčka angl. borrow??? Lze upravit sčítačku na odčítačku? Jak???? JPO 2005/6 B 11 c A. Pluháček 19.3.2006
převod odčítání na sčítání i A B A+(Z B) (mod Z) JPO 2005/6 B 12 c A. Pluháček 19.3.2006
převod odčítání na sčítání ii Jaknajíthodnotu Z B? X= n x i z i x i 0, z 1 i=0 X max = n i=0 = Z 1 (z 1)z i = n+1 j=1 z j n i=0 z i = z n+1 1 = z=2: X max =11...11= Z 1 Z=11...11+1 Z B=11...11 B+1 xx...xx řádovámřížka Z B= B+1 B...negacevšechbitů...+1 tzv.horkájednička(angl.hotone) pozn.: B=0 Z B= Z 0 (mod Z) B+1=11...11+1=100...00 JPO 2005/6 B 13 c A. Pluháček 19.3.2006
převod odčítání na sčítání iii A a 3 a 2 a 1 a 0 B b 3 b 2 b 1 b 0 R r 3 r 2 r 1 r 0 R=A+(Z B) q n Z= A B (1 q n ) Z R=A B q n Z 0 R < Z q n =1 R=A B 0 q n =0 R=A B Z < Z A B <0 q n =1 A B R=A B q n =0 A < B R=Z (B A) JPO 2005/6 B 14 c A. Pluháček 19.3.2006
převod odčítání na sčítání iv doplňkový pseudokód q n =0 q n =1 Je-li q n =0, tzn. B > A, pak R=Z (B A) B A=Z R B A=R+1 JPO 2005/6 B 15 c A. Pluháček 19.3.2006
doplňkový kód i X D(X) 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1-8 1 0 0 0-7 1 0 0 1-6 1 0 1 0-5 1 0 1 1-4 1 1 0 0-3 1 1 0 1-2 1 1 1 0-1 1 1 1 1 JPO 2005/6 B 16 c A. Pluháček 19.3.2006
doplňkový kód ii 1 2 Z X < 1 2 Z D(X)= { X, je-li X 0, Z+ X= Z X, je-li X <0. D(X) X (mod Z) D(X) x D n xd n 1... xd 1 xd 0 x D n x D n =0 D(X) 0 =1 D(X) <0 JPO 2005/6 B 17 c A. Pluháček 19.3.2006
doplňkový kód sčítání a odčítání sčítání: D(A+B) A+B D(A)+ D(B) (mod Z) sečíst D(A)+D(B) a ignorovatpřenos q n znejvyššíhořádu označování: D(A)+D(B) q n Z= S D(A) a D n ad n 1... ad 1 ad 0 D(B) b D n bd n 1... bd 1 bd 0 S s D n sd n 1... sd 1 sd 0 odčítání: D(A B) A B D(A) D(B)(mod Z) odečíst D(B)od D(A)a ignorovatvýpůjčku v n pronejvyššířád anebo převéstodečítánínasčítání,tzn. sečíst D(A)+D(B)+1 a ignorovatpřenos q n znejvyššíhořádu JPO 2005/6 B 18 c A. Pluháček 19.3.2006
doplňkový kód přeplnění i přeplněnípřisčítání(a+b 1 2 Znebo A+B < 1 2 Z): 1. A <0aB 0 A A+B < B B <0aA 0 B A+B < A!kpřeplněnínemůžedojít! 2. A 0aB 0 přeplnění: A+B 1 2 Z výsledek má opačné znaménko vizpříklad5+4 7 3. A <0aB<0 přeplnění: A+B < 1 2 Z výsledek má opačné znaménko vizpříklad( 5)+( 5) 6 JPO 2005/6 B 19 c A. Pluháček 19.3.2006
detekce přeplnění: doplňkový kód přeplnění ii 1 a D n = bd n =0 a sd n =1 nebo a D n = bd n =1 a sd n =0 over=a D n bd n sd n + ad n bd n sd n 2 a D n b D n p D n qn D s D n 0 0 0 0 0 0 0 1 0 1 q n p n q n = p n 0 1 0 0 1 q n = p n 0 1 1 1 0 q n = p n 1 0 0 0 1 q n = p n 1 0 1 1 0 1 1 0 1 0 q n p n q n = p n 1 1 1 1 1 q n = p n over=q n p n JPO 2005/6 B 20 c A. Pluháček 19.3.2006
doplňkový kód přeplnění iii 1 2 JPO 2005/6 B 21 c A. Pluháček 19.3.2006
kombinační část jednoduché aritmetické jednotky řídicí signály add neg inc výstup 0 0 0 A 1 0 0 A+B 0 1 1 A B 0 0 1 A+1 1 1 0 A 1 stavové signály: carry přenos z nejvyššího řádu over přeplněnívdoplňkovémkódu q n p n JPO 2005/6 B 22 c A. Pluháček 19.3.2006
doplňkový kód aritmetický posuv vlevo obecně:aritmetickýposuvojmístvlevo násobení z j z=2 aritmetickýposuno1místovlevo A 1=2A=A+A doplňkový kód: s=a b p q=ab+ap+bp } & a=b = { s=p q=a aritmetický posun o 1 místo vlevo v doplňkovém kódu: JPO 2005/6 B 23 c A. Pluháček 19.3.2006
doplňkový kód aritmetický posuv vpravo Úvaha: Je-li po korektním posuvu vpravo, při němž nedojde ke ztrátě přesnosti, proveden opačný posuv(tzn. vlevo), musí se získat původního hodnota. Z toho plyne: Je třeba provést logický posuv a do nejvyššího řádu doplnit stejný bit, jaký tam byl před posuvem. JPO 2005/6 B 24 c A. Pluháček 19.3.2006
doplňkový kód rozšiřování řádové mřížky i problém: Jak převést kratší zápis na delší? { X, pro X 0 D(X)= Z+ X, pro X <0 { X, pro X 0 D (X)= Y+ X, pro X <0 Z=2 n+1 Y=2 k+1 1. X 0 0vnejvyššímřádu D (X)=D(X)=X 2. X <0 1vnejvyššímřádu D (X)=D(X)+Y Z Y Z=2 k+1 2 n+1 =(2 k n 1) 2 n+1 2 k n 1 11...11 } {{ } n k násobení2 n+1... posuvon+1místdoleva (přidat n+1 nul zprava) JPO 2005/6 B 25 c A. Pluháček 19.3.2006
doplňkový kód rozšiřování řádové mřížky ii příklad: n=3, Z=10000 2 k=7, Y=100000000 2 D(6) = 0110 D (6) = 00000110 D( 6) = 1010 D ( 6)= 11111010 JPO 2005/6 B 26 c A. Pluháček 19.3.2006