MI-AAK(Aritmetika a kódy) Dělení c doc. Ing. Alois Pluháček, CSc., 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Evropský sociální fond Praha& EU: Investujeme do vaší budoucnosti
A4. dělení úvod dělení nezáporných čísel menších než 1 dělenísnávratempřesnulu děleníbeznávratupřesnulu dělení nezáporných celých čísel (bez návratu přes nulu) dělení čísel se znaménkem přímýkód inverzní kód doplňkový kód přeskakování nul přeskakování jedniček metody SRT použití rychlých násobiček rozšiřování zlomku použití iterací MI-AAK c A. Pluháček 2011
úvod dělení značně problematická operace jedenoperand(dělitel)nikdynesmíbýt0 (!!!) obecnějevýsledek prakticky nezobrazitelný A/B=? B 0!!! nezáporná čísla dvojková soustava ➊ Z=1 = A <1, B <1aA/B <1 ➋ ε=1 = celáčísla A B=? celočíselnýpodíl A%B=? zbytekpodělení ➊příklad: A=0,101 2 B=0,110 2 0,101/0,110. =0,110 zbytek:0,000100 MI-AAK A4 1 c A. Pluháček 2011
dělení s návratem přes nulu 0,101 : 0,110 101 : 110 = 0,110 podíl 110 1 0, + 110 návrat 101 0 110 100 0 1 110 10 0 1 110 10 0 + 110 návrat 100 zbytek návrat pomocná operace obnovující původní dílčí zbytek pro následující odčítání MI-AAK A4 2 c A. Pluháček 2011
dělení bez návratu přes nulu návrat = přičtení jistého čísla X + X následujeodečteníčísla X 1 X/2 +X/2 101 : 110 = 0,110 podíl 110 1 0 0, + 110 100 0 1 110 10 0 1 110 10 0 + 110 návrat 100 zbytek návrat pouze v posledním kroku, je-li zbytek záporný, atojenomvpřípadě,žetřebazískattakésprávnýzbytek. MI-AAK A4 3 c A. Pluháček 2011
dělení bez návratu přes nulu ii α ψ 1.takt 0 1 dalšítakty 1 0 návrat 0 0 l+1(popř. l+2) taktů podíl...c zbytek...a MI-AAK A4 4 c A. Pluháček 2011
dělení bez návratu přes nulu iii vstup sčítačky Uvědomíme si, že obě schémata jsou ekvivalentní. MI-AAK A4 5 c A. Pluháček 2011
dělení nezáporných celých čísel 111 : 011 0 0 0 1 1 1 : 0 0 1 1 1 1 0 0 : : negace 1 : : horká1 0 1 1 1 0 : : 0 : 1 1 0 1 : + 0 0 1 1 : 1 0 0 0 0 1 + 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 N 0 0 1 1 návrat 1 0 0 0 1 0 0 1 zbytek 0 1 0 podíl MI-AAK A4 6 c A. Pluháček 2011
dělení nezáporných celých čísel ii 0 0 0 1 1 1 : 0 0 1 1 1 1 0 0 : : negace 1 : : horká1 0 1 1 1 0 : : 0 ււււււ 1 1 0 1 1? + 0 0 1 1 : : 1 0 0 0 0 1 : + 1 ււււււ 0 0 0 1?? 1 1 0 0 : : 1 : : 0 1 1 1 0 : : 0 ււււււ 1 1 0??? N 0 1 1 0 : : návrat 1 0 0 1? : : 0 0 1??? 0 0 1 zbytek 0 1 0 podíl MI-AAK A4 7 c A. Pluháček 2011
dělení nezáporných celých čísel iii α β ψ 1.takt 1 0 1 dalšítakty 1 0 0 návrat 0 1 0 l(popř. l+1) taktů podíl...nižšířádya zbytek...vyššířádya MI-AAK A4 8 c A. Pluháček 2011
➊přímýkód znaménko: +++ + + + dělení čísel se znaménkem 0 0 0 0 1 1 1 0 1 1 1 0 XOR absolutní hodnota nezáporné číslo dělení čísel bez znaménka ➋ inverzní kód možná metodika návrhu: Pro různé kombinace znamének dělence A a dělitele B se modifikuje známý postup pro dělení nezáporných čísel A a B tak,aby byly zachovány stejné absolutní hodnoty mezivýsledků a bity podílu byly invertovány(anebo neinvertovány) podle toho,zda A/B= A / B (anebo A/B= A / B ). MI-AAK A4 9 c A. Pluháček 2011
děleníčíselseznaménkem ➋inverzníkód A... dělenec B... dělitel Y... výsledekdílčíoperace A 0 B >0 B <0 Y 0 Y <0 Y 0 Y <0 bit výsledku 1 0 0 1 násl. operace + + A <0 B >0 B <0 Y 0 Y >0 Y 0 Y >0 bit výsledku 0 1 1 0 násl. operace + + souhlas znamének bit podílu = 1 a příště odečítat Uvažte případ: znaménko a nula! MI-AAK A4 10 c A. Pluháček 2011
dělení čísel se znaménkem ➌ doplňkový kód ➌ doplňkový kód Postupprodělenívinverznímkódulzepoužítivpřípadě,že dělenec, děliteli a zbytek jsou v jakémkoliv kódu, pokudmábýt podíl v inverzním kódu. dělenívdoplňkovémkódu modifikacedělení v inverzním kódu určit obraz I(C) podílu C v inverzním kódu, ale všechny operace a jejich vyhodnocení provádět v doplňkovém kódu obraz I(C) { převést do doplňkového kódu: I(C), pro C >0, D(C)= I(C)+ε,pro C <0. zbytek bude v doplňkovém kódu MI-AAK A4 11 c A. Pluháček 2011
Dále se budeme zabývat pouze dělením čísel bez znaménka a budeme předpokládat, že dělitel B splňuje podmínku 1 2 B <1, tzn. že je tzv. normalizován. pozn.: Naprosto analogicky lze postupovat v případě, že 1 B <2. MI-AAK A4 12 c A. Pluháček 2011
přeskakování nul příklad dělení: 0,1000 : 0,1111 = 0,1000 1000 0001 0,1111 0 0 10010 0, 1111 +0,1111 1 1 00010 1 0001 0,1111 2 0 0011 0 0100 návrat 0001 0,1111 3 0 0101 0 1000 návrat 0001 0,1111 4 0 1001 0 1000 návrat MI-AAK A4 13 c A. Pluháček 2011
přeskakování nul ii 3nuly = zapsat2nulydopodílua dílčí zbytek posunout o tři místa 0,1000 : 0,1111 = 0,1000 1000 0001 0,1111 0 0 10010 0, 1111 +0,1111 1 1 0001000 100 0001 0,1111 4 0 1001 0 návrat 1000 lze zobecnit: knul = zapsat k 1nuldopodílua dílčízbytekposunoutokmíst MI-AAK A4 14 c A. Pluháček 2011
přeskakování jedniček příklad dělení: 0,1110 : 0,1111 = 0,1110 1110 0001 0,1111 0 0 11110 0, 01111 +0,1111 1 1 1101 1 11100 protinávrat?! 1111 +0,1111 2 1 1011 1 11000 protinávrat?! 1111 +0,1111 3 1 0111 1 10000 protinávrat?! 1111 0,1111 4 0 1111 0 1111 návrat 1110 MI-AAK A4 15 c A. Pluháček 2011
přeskakování jedniček ii 4jedničky = zapsat3jedničkydopodílua dílčí zbytek posunout o čtyři místa 0,1110 : 0,1111 = 0,1110 1110 0001 0,1111 0 0 11110000 0,111 1111 +0,1111 4 0 1111 0 1111 návrat 1110 lze zobecnit: k jedniček = zapsat k 1 jedniček do podílu a dílčízbytekposunoutokmíst MI-AAK A4 16 c A. Pluháček 2011
metody SRT metody SRT(Sweeney- Robertson- Tocher) Podíl se nejprve určí v soustavě s relativními číslicemi. Pak se převede do standardní soustavy. Zbytek se po každé dílčí operaci sčítání/ odčítání normalizuje přeskakovaní nul a jedniček. redundantní počet relativních číslic redundance přeskakování, co největšího počtu bitů úprava dělence i dělitele před vlastní operací redundance určení číslice podílu Stačí jenom několik bitů dílčího zbytku. použití soustav se základem z > 2 MI-AAK A4 17 c A. Pluháček 2011
rozšiřování zlomku rozšiřování zlomku A B = A 0 B 0 = A 1 B 1 = A 2 B 2 = A 3 B 3 =... A i+1 = A i K i B i+1 = B i K i A 0 = A B 0 = B B i 1 = A i A B B=1 δ 1 2 B <1 0 < δ 1 2 B i =1 δ i K i =1+δ i =2 B i K i = B i + ε B i+1 = B i K i =(1 δ i ) (1+δ i ) B i+1 =1 δ 2 i Je-li δ i 1získásekaždýmkrokemcca dvojnásobný počet platných číslic. MI-AAK A4 18 c A. Pluháček 2011
použití iterací Newtonova metoda(metoda tečen) [Newton Raphson] Pozorování: g(x) a ξ x 2 x 1 x 0 b x Předp.:Funkce g(x)nabývávintervalu a, b hodnoty0 (pro x=ξ)ajevněmspojitá,rostoucíaryzekonvexní. g (x 0 )= g(x 0) x 0 x = x 1 = x 0 g(x 0) 1 g (x 0 ) g (x 1 )= g(x 1) x 1 x = x 2 = x 1 g(x 1) 2 g (x 1 ). MI-AAK A4 19 c A. Pluháček 2011
použití iterací ii Tedy pro i=0,1,2,... x i+1 = x i g(x i) g (x i ) Rovnice g(x) = 0 mávintervalu a, b kořen,ato ξ= lim i x i. přesneji viz následující fólii MI-AAK A4 20 c A. Pluháček 2011
použití iterací iii Existuje-litakové aab > a,že funkce g(x)jevintervalu a, b spojitá a mávněm spojitouprvníderivaci g (x) a spojitoudruhouderivaci g (x), g(a) g(b) <0, ( x a, b ) g (x) g (a) >0, ( x a, b ) g (x) g (a) >0 a ( x 0 a, b ) g(x 0 ) g (x 0 ) >0, márovnice g(x)=0vintervalu a, b jedinýkořen,ato ξ= lim x i, i kde x i+1 = x i g(x i) g (x i ) pro i=0,1,2,3,.... Podmínky jsou postačující, nikoliv nutné. Rovnice g(x) = 0 můžetedymítvintervalu a, b jedinýkořen,kterýlzeurčit uvedeným postupem, i když některá z podmínek splněna není. MI-AAK A4 21 c A. Pluháček 2011
použití iterací iv ξ= 1 B A B = A 1 B je kořenem rovnice 1 x B=0. ξjetedykořenemrovnice g(x)=0, kde g(x)= x 1 B, g (x)= 1 x 2 a g (x)= 2 x 3. g(x) 1 B 2 B x MI-AAK A4 22 c A. Pluháček 2011
použití iterací v Tedy x i+1 = x i g(x i) g (x i ) = x i (2 B x i ) a vyhovuje libovolné a (0, 1 B ), libovolné b ( 1 B, )a libovolné x 0 (0, 1 B ). Pozn.:Lzepoužíttakélibovolné x 0 1 B, 2 x i+1 1 B B ) 1 B 2 B x i MI-AAK A4 23 c A. Pluháček 2011
použití iterací vi Výpočethodnoty 1 B x i+1 = x i (2 B x i ) 1 normalizované B: 2 B <1 = 1 < B 1 2 [ x 0 (0, 1)] x 0 ( ) 0, rychlost konvergence: x i = 1 B (1 δ) = x i+1= 1 B (1 δ2 ) δ 1 = každouiteracísezíská dvojnásobný počet platných míst Jevýhodnévolit x 0 tak,abybylo δ conejmenší. malá tabulka v paměti ROM adresovaná několik prvními bity B 1 B MI-AAK A4 24 c A. Pluháček 2011