Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Martín Vázquez
Curso 2015
División
Algunos ejemplos de división de números naturales en notación
dot, a=q.b + r, (lápiz y papel)
-
0
-
0 0 Si a es de 7 dígitos y b de 2 dígitos,
-
0 0 0
se requiere como máximo 6 pasos
- es decir, 7-2+1 pasos
0 0 0 0
Si a es de 6 dígitos y b de 3 dígitos,
se requiere como máximo 4 pasos
es decir, 6-3+1 pasos
1
División
En el ejemplo empezamos tomando los 3 primeros
dígitos del dividendo, no siempre es así
-
0
-
0 0
-
0 0 0
-
0 0 0 0
División 3
División
En el ejemplo empezamos tomando los 3 primeros
dígitos del dividendo, no siempre es así
-
0
- Ej: 1010012/110, se debe comenzar tomando los 4
primeros bits
0 0
-
0 0 0
-
0 0 0 0
División 4
2
División
En el ejemplo empezamos tomando los 3 primeros
dígitos del dividendo, no siempre es así
-
0
- Ej: 1010012/110, se debe comenzar tomando los 4
primeros bits
0 0
-
0 0 0 Si el divisor es 1102, se requieren 3 pasos, si el
- divisor fuera 0102, se requieren 5 pasos. Depende
0 0 0 0 de los 0’s iniciales del divisor
División 5
División
En el ejemplo empezamos tomando los 3 primeros
dígitos del dividendo, no siempre es así
-
0
- Ej: 1010012/110, se debe comenzar tomando los 4
primeros bits
0 0
-
0 0 0 Si el divisor es 1102, se requieren 3 pasos, si el
- divisor fuera 0102, se requieren 5 pasos. Depende
0 0 0 0 de los 0’s iniciales del divisor
División 6
3
División
En el ejemplo empezamos tomando los 3 primeros
dígitos del dividendo, no siempre es así
-
0
- Ej: 1010012/110, se debe comenzar tomando los 4
primeros bits
0 0
-
0 0 0 Si el divisor es 1102, se requieren 3 pasos, si el
- divisor fuera 0102, se requieren 5 pasos. Depende
0 0 0 0 de los 0’s iniciales del divisor
División 7
División
Estrategia para abordar la división de números naturales en base
B, a=q.b + r,
Ejemplo, con a de 6 dígitos y b de 3 dígitos
3 5 3
Sea a de n dígitos y b de m
r(0) dígitos
En cada paso se determina un
r(1) resto parcial r(i) de n+m dígitos
q
r(2) Se requieren n pasos para
efectuar la división completa
r(3) qi en {0,1, 2, . . ,B-1}
r(4)
r(5)
División 8
4
División con restauración
Ejemplo en base 10,
q = a/b, con a = 342510 y b = 23410
División 9
División 10
5
División con restauración
Ejemplo en base 10,
q = a/b, con a = 342510 y b = 23410
División 11
00010101 110
110 00011 101012 = 1102.112 + 112
restaura resto
00010101
110
00010101
110
00010101
110 Inicializa r(0) = a
00001001 En cada paso computa r(i) = r(i-1) – qi.b.25-i
110 queda r = r(n), 0≤qi<2
00000011
División 12
6
División con restauración
Con esta estrategia se puede perfectamente agregar fraccionarios
al resultado
Ejemplos,
q = a/b forma XXXX.YY, con a = 342510 y b = 23410
q = a/b forma XXXXX.Y, con a = 101012 y b = 1102
División 14
7
División con restauración
Entre números naturales y resultado con fraccionarios (base 2)
Ejemplo,
q = a/b, con a = 1112, b = 112 y 2 bits de parte fraccionaria en la
solución (q tiene forma XXX.YY)
Ejemplo,
q = a/b, con a = 1112, b = 112 y 2 bits de parte fraccionaria en la
solución (q tiene forma XXX.YY)
8
División con restauración
Entre números naturales y resultado con fraccionarios basada
en desplazamientos (base 2)
Implementación secuencial o serial
shl shl
shl
ld b
n+m+k-1 n+k-1 n+k-2 0
m+1 m
SUB
sign n+k ciclos de latencia
requiere de unidad de control
m
sencilla
División 17
El dividendo y divisor, en el algoritmo anterior, están en punto fijo con formato x.,
es decir sin fraccionarios. Muchas veces es deseable que los operandos posean
números fraccionarios
División 18
9
División con restauración
Normalización de operandos
División 19
r(0) = a
for i: 1 to k loop
r(i) = 2.r(i-1) – b
Formato de resultado
if r(i) ≥ 0 then
q(i) = 1 q = 0,q1q2 ● ● qk
else
q(i) = 0
r(i) = 2.r(i-1)
end if
end loop
División 20
10
División con restauración
Algoritmo de división con restauración (restoring) y operandos
normalizados (base 2)
Considerando
• dividendo a y divisor b normalizados 0,1X (0,1≤a,b<1), a≤b y k
bits de precisión en el resultado
r(0) = a
for i: 1 to k loop
r(i) = 2.r(i-1) – b
Formato de resultado
if r(i) ≥ 0 then
q(i) = 1 q = 0,q1q2 ● ● qk
else
q(i) = 0
restaura resto r(i) = 2.r(i-1)
end if
end loop
División 21
r(0) = a
for i: 1 to k loop
r(i) = 2.r(i-1) – b
if r(i) ≥ 0 then
Cada paso computa 2.r(i-1) = b.q(i) + r(i),
q(i) = 1
else
donde q(i) puede ser 0 o 1
q(i) = 0
r(i) = 2.r(i-1)
end if
end loop
División 22
11
División con restauración
Algoritmo de división con restauración (restoring) y operandos
normalizados (base 2)
r(0) = a
2.r(0) = b.q(1) + r(1)
q(1) q(2) q(3) q (k ) r (k )
2.r(1) = b.q(2) + r(2) a = b. + + +•••+ k + k
.. 2 4 8 2 2
.
2.r(k-1) = b.q(k) + r(k)
División 23
División
Normalización de los operandos (base 2)
a a '.2 s a ' s − f
= = .2
b b'.2 f b'
División 24
12
División
Normalización de los operandos (base 2)
a a '.2 s a ' s − f
= = .2
b b'.2 f b'
División 25
División
Normalización de los operandos (base 2)
Ejemplos
a’ = 100112.2-5 y b´ = 1012.2-3
a a' 2
= .2
b b'
a’ = 11012.2-4 y b´ = 10101012.2-7
a a ' −3
= .2
b b'
División 26
13
División
Normalización de los operandos (base 2)
Ejemplos
a’ = 0,00112.22 y b´ = 102.2-2
a a' −4
= .2
b b'
División 27
División
Normalización de los operandos (base 2)
14
División con restoring
Ejemplo de división con (restoring) y operandos normalizados
Considerar
• dividendo a = 10010102 y divisor b = 10002
• 4 bits de precisión en el resultado
entonces
a’ = 10010102.2-7 y b´ = 10002.2-4 , pero como a’>b’ entonces
a’’ = a’.2-1
a a' ' 4
= .2
b b'
División 29
0,0101000 2.r(2)
3) - 0,1000000 -b’ r(3)=2.r(2) 0,100
q(3)=0
negativo 2.r(2) – b’ < 0
0,1010000 2.r(3)
4) - 0,1000000 -b’ r(4)=2.r(3)-b’ 0,1001
q(1)=1
0,0010000 2.r(3) – b’ > 0
División 30
15
División con restoring
División con restoring y operandos normalizados
Celda RC x y
.... 0
RC RC RC RC
.... q1
+ -
x y
c+ subtractor c
0 yn-1 yn-2
RC
Sign bit 0 1
.... 0
RC RC RC .... q2
División 31
16
División sin restauración
Algoritmo sin restauración (non-restoring) y operandos
normalizados (base 2)
Considerando
• dividendo a y divisor b normalizados 0,1X (0,1≤a,b<1), a≤b y k
bits de precisión en el resultado
r(0) = a
for i: 1 to k loop
if r(i-1) ≥ 0 then
r(i) = 2.r(i-1) – b
if (r(i) ≥ 0) then
q(i)=1 Formato de resultado
else
q(i)=0 q = 0,q1q2 ● ● qk
end if;
else
r(i) = 2.r(i-1) + b
evita restauración de resto
if (r(i) ≥ 0) then
q(i)=1
else
q(i)=0
end if;
end if
end loop División 33
División
restoring y non-restoring
En cada paso, ambos algoritmos realizan el mismo cómputo
Restoring Non-restoring
paso i paso i
r(i)=2.r(i-1) – b < 0, entonces r(i)=2.r(i-1) – b < 0, entonces
r(i)=2.r(i-1) y q(i)=0 q(i)=0
División 34
17
División non-restoring
División non-restoring y operandos normalizados
Ejemplo, dividendo 0,010010102 y divisor b’ = 0,10002
11,0101000 2.r(2)
3) +00,1000000 +b’ r(3)=2.r(2)+b’ 0,100
q(3)=0
11,1101000 2.r(2)+b’<0
11,1010000 2.r(3)
4) +00,1000000 +b’ r(4)=2.r(3)+b’ 0,1001
q(4)=1
00,0010000 2.r(2)+b’>0
División 35
_
0 A/S
0 0 Y(n-1:0)
_
A/S
:
División 36
18
División
restoring vs. non-restoring
Restoring
Trabaja con operandos, resto y cociente positivos
No requiere sumador/restador.
Se puede restaurar mediante signo de restador y multiplexor
Non-restoring
Trabaja con operandos y cociente positivos
El resto puede ser positivo o negativo (entero)
Requiere sumador/restador
Cada paso
Menor tiempo de cómputo
Menor ocupación de área
División 37
19