Algoritmos Multiplicación...

33
1 Algoritmos Multiplicación División

Transcript of Algoritmos Multiplicación...

Page 1: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

1

Algoritmos Multiplicación

División

Page 2: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

2

Algoritmos de Multiplicación

Producto = Multiplicando * MultiplicadorP : productoR: MultiplicandoQ: Multiplicador

P = R * Q

Page 3: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

3

Algoritmos de Multiplicación

Primer Algoritmo.

Page 4: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

4

Algoritmos de Multiplicación

Primer Algoritmo.

Page 5: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

5

Algoritmos de Multiplicación

Segundo Algoritmo

Page 6: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

6

Algoritmos de Multiplicación

Segundo Algoritmo

Page 7: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

7

Algoritmos de Multiplicación

Segundo AlgoritmoEjemplo 0010 * 0011

Multiplicador Multiplicando Producto

0 0011 0010 00000000

0011 0010 00100000

1 0011 0010 00010000

0001 0010 00010000

0001 0010 00110000

2 0001 0010 00011000

0000 0010 00011000

0000 0010 00011000

3 0000 0010 00001100

0000 0010 00001100

0000 0010 00000110

4 0000 0010 00000110

0000 0010 00000110

Page 8: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

8

Algoritmos de Multiplicación

Tercer Algoritmo

Page 9: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

9

Algoritmos de Multiplicación

Tercer Algoritmo

Page 10: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

10

Algoritmos de Multiplicación

Tercer Algoritmo Ejemplo

MultiplicandoMultiplicando ProductoProducto

0 0010 00000011

0010 00100011

1 0010 00010001

2 0010 00110001

0010 00011000

3 0010 00011000

0010 00001100

4 0010 00001100

0010 00000110

Page 11: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

11

Algoritmos de Multiplicación

Algoritmo Booth’s (operandos con signo) Multiplicando 0010 Multiplicador 1001

Multiplicando Producto Multiplicador

0010 0000 10010qqii qqi-1i-1

Page 12: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

12

Algoritmos de Multiplicación

Algoritmo Booth’s (operandos con signo) Suma o Resta el multiplicando a la mitad

izquierda del producto y coloca el resultado en la mitad izquierda del producto:

Si qi = 0 y qi-1 = 1 suma

Si qi = 1 y qi-1 = 0 resta

Si qi = qi-1 no se efectúa ninguna operación.

Desplaza 1 bit a la derecha registro producto.

Page 13: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

13

Algoritmos de Multiplicación

Algoritmo Booth’s (operandos con signo)Multiplicando Producto Multiplicador

0010 0000 1001 0

0010 1110 1001 0

qi = 0 y qi-1 = 1, suma

qi = 1 y qi-1 = 0, resta

qi = qi-1 = 0, solo se desplaza 1 bit

se desplaza 1 bit

0010 1111 0100 1

0010 0001 0100 1 se desplaza 1 bit

0010 0000 1010 0

0010 0000 0101 0 qi = 1 y qi-1 = 0, resta

0010 1110 0101 0 se desplaza 1 bit

0010 1111 0010 1

Page 14: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

14

Algoritmos de División

Dividendo = Cuociente * Divisor + Resto

Page 15: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

15

Algoritmos de División

Primer Algoritmo

Page 16: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

16

Algoritmos de División

Primer Algoritmo

Page 17: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

17

Algoritmos de División

Segundo Algoritmo

Page 18: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

18

Algoritmos de División

Segundo Algoritmo

Page 19: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

19

Algoritmos de División

Tercer Algoritmo

Page 20: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

20

Algoritmos de División

Tercer Algoritmo

Page 21: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

21

Punto Flotante: Suma

Ejemplo: sumar los números9,999

10*101 + 1,610

10 * 10-1

Asuma que solo se puede almacenar cuatro dígitos significativos y dos dígitos para el exponente.

Cómo se realiza esta suma ?

Page 22: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

22

Punto Flotante: Suma

Primero alinear el punto decimal de el número que posee menor exponente:1,610

10*10-1 = 0,1610

10*100 = 0.01610

10*101

Sumar ambos significandos (mantisa) 9,999

10

+ 0,01610

10,01510

→ 10,01510

* 101

Page 23: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

23

Punto Flotante: Suma

Número flotante normalizado10,015

10 * 101 = 1,0015

10 * 102

Se asume que se puede almacenar cuatro dígitos significativos, por lo que se debe redondear el número.

1,00210

* 102

Page 24: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

24

Punto Flotante: SumaInicio

Compara los exponentes de los dos número;Efectúa un corrimiento a la derecha del número

más pequeño hasta que el exponente sea igual al del otro número

Suma los significandos

Normaliza la suma, realiza corrimiento:hacia la derecha e incrementa el exponente,

OHacia la izquierda y decremeta el exponente

Overflow ounderflow

Excepción

Redondear significando de acuerdo alNúmero de bits

Normalizado ?

Fin

si

no

si

no

Page 25: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

25

Punto Flotante: Suma

Page 26: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

26

Punto Flotante: Multiplicación

Ejemplo: multiplicar los números1,110

10*1010 x 9,200

10 * 10-5

Asuma que solo se puede almacenar cuatro dígitos significativos y dos dígitos para el exponente.

Cómo se realiza esta multiplicación ?

Page 27: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

27

Punto Flotante: Multiplicación

Se calcula el exponente: sumando los exponentes de los operandosDirecto 10+ (-5) = 5O polarizado

10 + 127 = 137 -5 + 127 = 122 Nuevo exponente

= 137 +122 – 127 = 259 – 127 = 132 = 5 + 127

Page 28: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

28

Punto Flotante: Multiplicación

A continuación se multiplican los significandos.

1,11010

x 9,20010

0000 0000 2220 999010212000

10 → 10,212000

10

10,21210

* 105

Page 29: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

29

Punto Flotante: Multiplicación

Normalizar10,212

10* 105 = 1,0212

10* 106

Redondear1,021

10* 106

SignoEl signo del producto depende de los signos

de ambos operandos Si el signo de ambos es igual , el signo resultado es

positivo, en otro caso es negativo+1,021

10* 106

Page 30: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

30

Punto Flotante: Multiplicación

Ejemplo en base 21,000

2 * 2-1 x -1,110

2 * 2-2

Sumando exponentes (-1 -2) + 127 = 124 (-1 +127) + (-2 + 127) -127 = 124

Page 31: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

31

Punto Flotante: Multiplicación

Multiplicando significandos 1.000

2

x 1.1102

0000 1000 10001000

11100002

→ 1,1100002 * 2-3

Page 32: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

32

Punto Flotante: Multiplicación

Verificar si esta normalizado y verificar el exponente, overflow o underflow

(254 >= Ei >= 1)

Redondear 1,110

2 * 2-3

Signo-1,110

2 * 2-3

Page 33: Algoritmos Multiplicación Divisiónprofesores.elo.utfsm.cl/~tarredondo/info/comp-architecture/paralelo2/C... · Algoritmos de Multiplicación Algoritmo Booth’s (operandos con signo)

33

Inicio

Compara los exponentes de los dos número;Efectúa un corrimiento a la derecha del número

más pequeño hasta que el exponente sea igual al del otro número

Multiplica los significandos

Normaliza el producto si es necesario, realizandoUn corrimiento a la derecha e incremetandto el

exponente

Overflow ounderflow Excepción

Redondear significando de acuerdo alNúmero de bits

Normalizado ?

Fin

si

no

si

no

Suma los exponentes polarizados de los dos números y resta la polarización obteniendo así en nuevo exponente

Signo de acuerdo a los operandos

Punto Flotante: Multiplicación