Krok 3. rpD < 0!rp ! rp + D, Q ! Q - ulp
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 10
Dzielenie
Procedura dzielenia nieodtwarzającego
ri+1
D
(1) (2)
qi+1=1
qi=0 qi=1
2ri
(3)
(0,0) D 2D
- 2D - D
qi+1=0
- D
Wykres dzielenia nieodtwarzającego w kodzie U2 (D>0)
schemat wyznaczania cyfry ilorazu (1), reszty częściowej (2)
i przeskalowanej reszty częściowej (3)
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 11
Dzielenie
Schemat dzielenia nieodtwarzającego
ShL
C X/R Q 0 D
Ł
R
Schemat blokowy układu dzielącego liczby całkowite w kodzie U2:
C||X/R przedłu\ony rejestr dzielnej i reszt częściowych,
Q rejestr ilorazu, D rejestr dzielnika
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 12
Dzielenie
Dzielenie odtwarzające i nieodtwarzające (U2) przykład 1
X D > 0 zbędne skalowanie, |X / D | < 1
X= D =
X ( 0 ) 0 , 0 1 1 1
X ( 0 ) 0 , 0 1 1 1 D ( 1 ) 1 , 0 0 1 1
rD e" 0 rD < 0
r0 = X ( 0 ) 0 , 0 1 1 1 q0 = 0 r0 = X D ( 1 ) 1 , 1 0 1 0
q0=0
2r0 = 2X ( 0 ) 0 , 1 1 1 0 2r0 ( 1 ) 1 , 0 1 0 0
D ( 1 ) 1 , 0 0 1 1 13/16 + D ( 0 ) 0 , 1 1 0 1
rD e" 0 rD e" 0
r1 = 2r0 D ( 0 ) 0 , 0 0 0 1 q1 = 1 r1 = 2r0 + D ( 0 ) 0 , 0 0 0 1
q1=1
2r1 ( 0 ) 0 , 0 0 1 0 2r1 ( 0 ) 0 , 0 0 1 0
D ( 1 ) 1 , 0 0 1 1 D ( 1 ) 1 , 0 0 1 1
rD < 0
r2 = 2r1 D ( 1 ) 1 , 0 1 0 1 q2 = 0 r2 = 2r1 D ( 1 ) 1 , 0 1 0 1 < 0
q2=0
( 0 ) 0 , 0 1 0 0 2r2 ( 1 ) 0 , 1 0 1 0
2r2 = 2 " 2r1
D ( 1 ) 1 , 0 0 1 1 + D ( 0 ) 0 , 1 1 0 1
rD < 0
r3 = 2r2 D ( 1 ) 1 , 0 1 1 1 q3 = 0 r3 = 2r2 + D ( 1 ) 1 , 0 1 1 1 < 0
q3=0
( 0 ) 0 , 1 0 0 0 2r3 ( 1 ) 0 , 1 1 1 0
2r3 = 2 " 2r2
D ( 1 ) 1 , 0 0 1 1 + D ( 0 ) 0 , 1 1 0 1
rD < 0
r4 = 2r3 D ( 1 ) 1 , 1 0 1 1 q4 = 0 r4 = 2r3 + D ( 1 ) 1 , 1 0 1 1 < 0
q4=0
R = 2r3 ( 0 ) 0 , 1 0 0 0 R = 2r4 + D ( 0 ) 0 , 1 0 0 0
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 13
Dzielenie
Dzielenie nieodtwarzające w kodzie SD oraz U2
" iloraz w kodzie U2 wartość cyfry zale\y od znaku dzielnika
" iloraz w ograniczonej reprezentacji SD (bez zer)
1, gdy 2ri-1 e" 0,
ńł
qi =
ł1, gdy 2r < 0, ri = 2ri-1 - qi D
ół i-1
" dzielna i dzielnik w kodzie U2, wynik w systemie SD
" dzielna ujemna znak ilorazu jest ustalany automatycznie
" dzielnik ujemny odwrotne przypisanie cyfr ilorazu, zatem
1, gdy ri-1 D > 0 lub D > 0 & ri-1 = 0,
ńł
qi =
ł
1, gdy ri-1 D < 0 lub D < 0 & ri-1 = 0.
ół
ńł gdy ri-1 < 0,
sgn D,
albo qi = sgnD= |D|/D
ł
ółsgn D, gdy ri-1 e" 0.
" korekcja jeśli XR<0: (XD>0 ! R+D, Q 1), (XD<0 ! R D, Q+1)
" korekcja gdy ri-1 = 0 w algorytmie brak mo\liwości wytworzenia zera
iloraz Q = {q1,...,qi ,1,1,1,...} zamiast Q = {q1,..., qi ,0,0,0,...}. (!!|R|=|D|)
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 14
Dzielenie
Schemat dzielenia nieodtwarzającego w kodzie SD oraz U2
" iloraz w ograniczonej reprezentacji SD (bez zer)
ri
|D|
q = sgnD q = sgn D
i i
2 ri 1
2|D|
2|D| |D| (0,0) |D|
|D|
Parametryczny wykres dzielenia nieodtwarzającego w kodzie U2
iloraz Q w kodzie SD przekodowanie na kod U2: podstawienie qi = 2zi -1.
p p p-1
p
Q = zi 2-i+1 = -(1- z1) + zi+12-i + 2- p
"(2z -1)2-i = -(1- 2- ) + " "
i
i=1 i=1 i=1
1
zi = (1+ qi ) ! |{(1- z1), z2, z3..., zn ,1}U 2 | = |{0,q1,q2,q3...,qn}SD |
2
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 15
Dzielenie
Dzielenie nieodtwarzające (SD) przykład
D=0,0110 X=0,0011 U2 SD NB
2r0=2X (0)0,0110 q1=1
e" 0
D (1)1,1010
r1=2r0 D (0)0,0000 q1=1
e" 0
2r1 (0)0,0000 q2=1
e" 0
D (1)1,1010
r2=2r1 D (1)1,1010 < 0 q2=0
2r2 (1)1,0100 < 0 q3= 1
+D (0)0,0110 q2q3=01
r3=2r2+D (1)1,1010 < 0 q3=0
2r3 (1)1,0100 < 0 q4= 1
+D (0)0,0110 q3q4=01
r4=2r3+D (1)1,1010 < 0 < 0 q4=0
Q=0,1001
korekcja (0)0,0110 q4=0 Q=0,1000
R=r4+D (0)0,0000 Q=0,1000
Janusz Biernat, Dzielenie, 14 grudnia 2003 DIV 16
Obliczanie "
"
"
"
Przybli\enia
Niech Q = {qn-1,qn-2,...,q0,...,q-m} i Q( p) = {qn-1,qn-2,...,qn- p,0,...,0} . Mamy
n- p n- p
Q( p-1) + qn- p = Q( p) d" Q( p-1) + (qn- p +1)
n- p n-( p-1)
Q( p-1) d" Q( p) d" ... d" Q d" ... d" Q( p) + d" Q( p-1) +
n- p n- p
Q(p) przybli\enie Q z dokładnością (Q - Q( p) d" )
n- p n- p
Q( p) E" X z dokładnością jeśli (Q( p))2 d" X < (Q( p) + )2
Jak znalezć kolejną cyfrę qn p rozwinięcia i przybli\enie Q(p) pierwiastka
Q = X na podstawie wyznaczonego wcześniej przybli\enia Q(p 1)? Mamy
n- p n- p
(Q( p-1) + qn- p )2 = (Q( p))2 d" X < (Q( p) + )2
qn- p jest taka, \e reszta częściowa R( p) = X -[Q( p)]2 jest najmniejsza i dodatnia
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 1
Obliczanie "
"
"
"
Algorytm odręczny
n- p n- p
R( p) - R( p-1) = [Q( p-1)]2-[Q( p)]2= -qn- p [2Q( p-1) + qn- p ]
n- p n- p
R( p) = R( p-1) - qn- p [2Q( p-1) + qn- p ]
-(n- p) -(n- p)
Po skalowaniu rp = R( p)( )2, kładąc Qp = Q( p), otrzymamy:
2
rp = rp-1 - qn- p[2Qp-1 + qn- p]
algorytm
-2n
0. r0 = X
1. przeskaluj poprzednią resztę częściową r(p 1) przez 2
2. podwój i przeskaluj przez obliczone przybli\enie pierwiastka q(p 1)
3. znajdz największą qn-p, dla której kolejna reszta jest najmniejsza dodatnia
4. powtarzaj od 1. a\ do uzyskania wymaganej dokładności
Pierwsza cyfrą rozwinięcia spełnia oczywiście nierówność
2 -2(n-1)
2
(qn-1) d" X < (qn-1 +1)
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 2
Obliczanie "
"
"
"
Algorytm odręczny przykład
8 4 3, 3 5 4 4 84310 = 29 29 +2
q1=2
4
Q1 =2 2"2"10
4 4 3
(40+q0)q0 d" 443 q0=9
4 4 1
Q2 =29 2"29"10
2 3 5
(580+q 1)q 1 d" 235 q 1=0
2 3 5 4 4
Q3 =290 2"290"10
2 3 2 1 6
(5800+q 2)q 2 d" 23544 q 2=4
1 1 0 1 0 0 1 0 1 1 84310 = 292 +2
q4=1
1 Q1 =1
1 0 0 1
(100+q3)q3 d" 1001 q3=1
1 0 1 Q2 =11
1 0 0 0 0
(1100+q2)q2 d" 10000 q2=1
1 1 0 1 Q3 =111
0 0 1 1 1 0
(11100+q1)q1 d" 1111 q1=0
0 0 0 0 0 Q4 =1110
0 1 1 1 0 1 1
(111000+q0)q0d" 111011 q0=1
1 1 1 0 0 1 Q5 =11101 2910
1 0 1 0 r5 =10
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 3
Obliczanie "
"
"
"
Algorytm odręczny sekwencyjne generowanie podwojenia
8 4 3, 3 5 4 4 2
q1=2
4 +2
Q1 =2 2"2"10
4 4 3 4 9
(4q)q d" 443 q0=9
4 4 1
+9
Q2 =29 2"29"10
2 3 5 5 8 0
(58q)q d" 235 q 1=0
2 3 5 4 4
=0
Q3 =290 2"290"10
2 3 2 1 6 5 8 0 4
(580q)q d" 23544 q 2=4
1 1 0 1 0 0 1 0 1 1 1
q4=1
1 Q1 =1 +1
1 0 0 1 1 0 1
(10q)q d" 1001 q3=1
1 0 1 Q2 =11 1
1 0 0 0 0 1 1 0 1
(110q)q d" 10000 q2=1
1 1 0 1 Q3 =111 +1
0 0 1 1 1 0 1 1 1 0 0
(1110q)q d" 1111 q1=0
0 0 0 0 0 Q4 =1110 +0
0 1 1 1 0 1 1 1 1 1 0 0 1
(11100q)qd" 111011 q0=1
1 1 1 0 0 1 Q5 =11101 +1
1 0 1 0 r5 =10 1 1 1 0 1 0
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 4
Obliczanie "
"
"
"
Obliczanie pierwiastka kwadratowego w systemie NB
n- p n- p
R( p) - R( p-1) = [Q( p-1)]2-[Q( p)]2= -qn- p [2Q( p-1) + qn- p ],
-(n- p)
Po skalowaniu r( p) = R( p) , otrzymamy wzór podobny jak w dzieleniu:
n- p
r( p) = r( p-1) - qn- p[2Q( p-1) + qn- p ]
analogia do dzielenia
obliczanie pierwiastka kwadratowego w układzie dzielącym
W systemie dwójkowym reguła upraszcza się bo qi2 = qi "{0,1}.
0 -2n
Po normalizacji X = X i uproszczeniu indeksów (qn i qi) otrzymamy
ri = 2ri-1 - qi (2-i + 2Qi-1), i=1,2,..., p, r0 = X ,
ńł
0, gdy 2ri-1 < (2-i + 2Qi-1),
qi =
ł
e" (2-i + 2Qi-1).
ół1, gdy 2ri-1
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 5
Obliczanie "
"
"
"
Obliczanie pierwiastka kwadratowego w systemie NB przykład
2 i + 2Qi 1 qi
r0 = X 0 0 , 1 0 1 0 1 1 1 1 q0 = 0 0,
2r0 0 1 , 0 1 0 1 1 1 1 0 00,1 q1 = 1 0,1
e"
d1 = (2 1 + 2Q0 ) 1 1 , 1 0 0 0 0 0 0 0
r1 = 2r0 d1 0 0 , 1 1 0 1 1 1 1 0
2r1 0 1 , 1 0 1 1 1 1 0 0 01,01 q2 = 1 0,11
e"
d2 = (2 2 + 2Q1 ) 1 0 , 1 1 0 0 0 0 0 0
r2 = 2r1 d2 0 0 , 0 1 1 1 1 1 0 0
2r2 0 0 , 1 1 1 1 1 0 0 0 < 01,101 q3 = 0 0,110
0 1 , 1 1 1 1 0 0 0 0 01,1001 q4 = 1 0,1101
2r3 = 2 " 2r2 e"
d4 = (2 4 + 2Q3 ) 1 0 , 0 1 1 1 0 0 0 0
r4 = 2r3 d4 0 0 , 0 1 1 0 0 0 0 0
2r4 0 0 , 1 1 0 0 0 0 0 0 < 01,10101 q5 = 0 0,11010
0 1 , 1 0 0 0 0 0 0 0 < 01,101001 q6 = 0 0,110100
2r5 = 2 " 2r4
0 1 1 , 0 0 0 0 0 0 0 0 01,1010001 q7 = 1 0,1101001
2r6 = 2 " 2r5 e"
d7 = (2 7 + 2Q6 ) 1 1 0 , 0 1 0 1 1 1 1 0
r7 = 2r6 d7 0 0 1 , 0 1 0 1 1 1 1 0
2r7 0 1 0 , 1 0 1 1 1 1 0 0 01,10100101 q8 = 1 0,11010011
e"
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 6
Obliczanie "
"
"
"
Obliczanie pierwiastka kwadratowego metoda nierestytucyjna
algorytm oparty na regule
ri = 2ri-1 - qi (2-i + 2Qi-1), i=1,2,..., p, r0 = X
mo\na zrealizować w wersji nieodtwarzającej reszty częściowe.
Bezpośrednie zastosowanie niemo\liwe kolejna cyfra jest wyznaczana po
określeniu znaku następnej reszty. W pierwiastkowania wartość tej reszty
zale\ałaby od wartości cyfry wyznaczanej na jej podstawie!
Problem znika, jeśli wynik wytwarzamy w kodzie SD
ri = 2ri-1 - di , di = qi (2-i + 2Qi-1), r0 = X , i=1,2,...,p,
1, gdy 2ri-1 e" 0,
ńł
qi =
ł1, gdy 2r < 0,
ół i-1
! konieczna jest bie\ąca korekcja po wystąpieniu cyfry ujemnej
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 7
Obliczanie "
"
"
"
Obliczanie pierwiastka kwadratowego metoda nierestytucyjna
X=49/256 2 i+ 2Qi 1 qi (SD) Qi
r0=X 00,00110001 q0=0 0,
2r0 00,01100010 00,1 q1=1
e" 0
d1= (2 1+2Q0) 11,10000000 0,1
r1=2r0 d1 11,11100010
2r1 11,11000100 < 0 01,01 q2= 1 0,11
+d2=+(2 2+2Q1) 00,11000000 00,11 0,01
r2=2r1+d2 00,10000100 q1q2=01
2r2 01,00001000 0,101
e" 0
d3= (2 3+2Q2) 11,01100000 q3=1 0,011
r3=2r2 d3 00,01101000
2r3 00,11010000 0,1101
e" 0
d4= (2 4+2Q3) 11,00110000 q4=1 0,0111
R=r4=2r3 d4 01,00000000
7
Pierwiastek ma skończone rozwinięcie Q = 0,0111 (16 ).
W drugim kroku dokonano zamiany przybli\enia pierwiastka z kodu SD na U2
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 8
Obliczanie "
"
"
"
Janusz Biernat, Dzielenie, 14 grudnia 2003 SQRT 9
Wyszukiwarka