Está en la página 1de 131

T EMA 2.

U NIDAD A RITMÉTICO -L ÓGICA

1
U NIDAD A RITMÉTICO -L ÓGICA

 Introducción
 Unidad lógica
 Operadores de desplazamiento
 Unidad aritmética entera
 Sumar y restar
 Multiplicar y dividir

 Unidad aritmética flotante. IEEE 754


 Sumar y restar
 Multiplicar y dividir
 Técnicas de redondeo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 2
E STRUCTURA GENERAL ALU

B A TEMP
C

D
Operación
E ALU (suma,
resta,
desplaz.,
and, or,…
Z C O

 Operador aritmético, lógico, desplazamiento (uno o varios) (ALU)


 El Acumulador
 Uno o varios registros temporales
 Indicadores de resultado
 Acarreo (C)
 Negativo (N)
 Desbordamiento (O)
 Cero (Z)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 3


O PERACIONES T ÍPICAS

Potencia de cálculo
Operación Mínima Baja Media Alta
Suma/Resta en binario Comb Comb Comb Comb
Suma/Resta en coma flotante Prg/Copr Prg/UC UC Secu
Multiplicación en binario Prg/Copr Prg/UC UC Comb
Multiplicación en coma flotante Prg/Copr Prg/UC UC Secu
División en binario Prg/Copr Prg/UC UC Secu
División en coma flotante Prg/Copr Prg/UC UC Secu
Operaciones lógicas Comb Comb Comb Comb
Desplazamientos unitarios Comb Comb Comb Comb
Desplazamientos múltiples Prg Prg/UC UC Comb

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 4


O PERACIONES LÓGICAS

 Fáciles de implementar  Correspondencia directa con


Hardware.
 Puertas lógicas AND, OR, OR-EXCLUSIVA, INVERSORES,...

Operación

A
00

B Resultado
01

10

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 5


O PERACIONES DE DESPLAZAMIENTO

 Consisten en trasladar los bits de una palabra hacia la izquierda o


derecha.

 Dependiendo de cómo se traten los extremos, se obtienen tres tipos


de desplazamientos:

 Lógicos

 Circulares

 Aritméticos

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 6


D ESPLAZAMIENTOS LÓGICOS

 Los valores extremos se completan con ceros, aunque se pueden plantear


desplazamientos lógicos con inclusión de unos en lugar de ceros

o15 o14 o13 o12 o11 o10 o9 o8 o7 o6 o5 o4 o3 o2 o1 o0 Origen

Estos bits se K=4 Desp.


pierden Izq.
0
d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Destino

Habitualmente, el origen y destino es la misma palabra.

0 0
Desplazamiento lógico a la derecha Desplazamiento lógico a la izquierda

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 7


D ESPLAZAMIENTOS CIRCULARES

 Los bits del origen que sobran por un lado, se insertan en el destino por el
otro, matemáticamente:

o15 o14 o13 o12 o11 o10 o9 o8 o7 o6 o5 o4 o3 o2 o1 o0

K=4

d15 o14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0

Desplazamiento circular a la derecha Desplazamiento circular a la izquierda

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 8


D ESPLAZAMIENTOS ARITMÉTICOS

 Se tiene en cuenta el bit de signo y se representa en


complemento a 2.

 Desplazamiento a la izquierda (multiplicación por 2):


bs
0
Desplazamiento aritmético a la izquierda

 Se van perdiendo bits de signo y hay que introducir ceros por la


derecha para números positivos

 Para que no haya overflow hay que comprobar el bit de signo


después de la operación:
 Si el número es positivo, se desplaza y da negativo -> Overflow
 Si el número es negativo, se desplaza y da positivo -> Overflow

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 9


D ESPLAZAMIENTOS ARITMÉTICOS

 Ejemplos: Negativos en
complemento a 2:
O= 0000 1010 = 1010 x2 → D= 0001 0100 = 2010 → correcto 1 → 0 y +1

O= 0100 0000 = 6410 x2 → D= 1000 0000 = -12810 → incorrecto

O= 1111 1100 = -410 x2 → D= 1111 1000 = -8 10 → correcto

O= 1000 0100 = -12410 x2 → D= 0000 1000 = 810 → incorrecto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 10


D ESPLAZAMIENTOS ARITMÉTICOS

 Desplazamiento a la derecha (división por 2):


 Hay que conservar el signo del dato, hay que recircularlo.

 Hay que introducir ceros por la izquierda para números positivos

 Para números negativos hay que introducir unos

bs

Desplazamiento aritmético a la derecha

O= 0000 1010 = 1010 /2 → D= 0000 0101 = 510

O= 1111 1100 = -410 /2 → D= 1111 1110 = -2 10

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 11


I MPLEMENTACIÓN OPERACIONES DE
DESPLAZAMIENTO

 Puertas lógicas
Unidad de desplazamiento de 2 bits para el bit 4
 La complejidad es elevada.
o7 o6 o5 o4 o3 o2 o1 o0
 Las señales de control son las
mismas para cada bit.
Señales de control
k= -2
k= -1
k=+0
k=+1
k=+2

d7 d6 d5 d4 d3 d2 d1 d0
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 12
I MPLEMENTACIÓN OPERACIONES DE
DESPLAZAMIENTO

 Multiplexores Unidad de desplazamiento de 2 bits para el bit 4

o7 o6 o5 o4 o3 o2 o1 o0
El desplazamiento a la izquierda
está reflejados como un número
positivo en la señales de control.

Los desplazamientos a la derecha


están reflejados como un número
negativo expresado en C2

Señales de control
7 6 5 4 3 2 1 0
c2 0 0 0 1 1
1 0 0 1 1
MULTIPLEXOR c1
c0 0 1 0 1 0
k=+2 k=+1 k=+0 k= -1 k= -2

d7 d6 d5 d4 d3 d2 d1 d0 Colocamos en las entradas de control el


número de bits a desplazar

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 13


L A SUMA Y LA RESTA

 Semisumador Binario (H.A.)

Entradas Salidas

A B S C
S = AB + AB = A  B
C = AB
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

A S
A S
B

B H.A. C C

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 14


S UMADOR COMPLETO (F.A.)

 Sumador Binario (F.A.) Entradas Salidas

A B Cin S Cout
Cin 0 0 0 0 0
0 0 1 1 0
A
0 1 0 1 0
S
B F.A. 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1

Cout 1 1 0 0 1
1 1 1 1 1

S = A  B  Cin + A  B  Cin + A  B  Cin + A  B  Cin = (A  B)  Cin


Cout = A  B + A  Cin + B  Cin = A  B + Cin(A  B)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 15


S UMADOR COMPLETO (F.A.)

 Sumador completo (FA) – Puertas lógicas (expresión booleana)


1T
A
B
Cin 1T

1T

S 3T

Cout 2T

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 16


S UMADOR COMPLETO (F.A.)

 Sumador completo (FA) - Semisumadores

F.A.
H.A. 1T H.A. 1T
A S S 2T
S

C
C
B Cout
3T
1T
Cin

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 17


S UMADOR CON PROPAGACIÓN DE ACARREO
(CPA)

 La estructura para sumar dos números de n bits es colocar en


cascada n sumadores completos.

 El acarreo se propaga de una etapa a la siguiente: Sumador con


Propagación de Acarreo (Carry Propagated Adder)

Bn-1 An-1 B1 A1 B0 A0

Cn-1 C1 C0
FA FA FA
C2 S0
Sn-1 S1
Cn

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 18


S UMADOR CON PROPAGACIÓN DE ACARREO (CPA)

 Sumador con propagación de acarreo de 4 bits.

B3 A3 B2 A2 B1 A1 B0 A0

C3 C2 C1 C0
FA FA FA FA
C4
S3 S2 S1 S0

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 19


S UMADOR CON PROPAGACIÓN DE ACARREO (CPA)

 Sumadores construidos con sumadores completos a partir


de puertas lógicas: A
1T

B
Cin 1T

1T

S 3T

Tiempo Total = ( 2n + 1 ) T Cout 2T

B3 A3 B2 A2 B1 A1 B0 A0

C3 C2 C1 C0
8T
FA 6T
FA 4T
FA 2T
FA
9T 7T 5T 3T
C4
S3 S2 S1 S0

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 20


S UMADOR CON PROPAGACIÓN DE ACARREO (CPA)

 Sumadores completos construidos con semisumadores:


F.A.
H.A. 1T H.A. 1T
A S S 2T
S
C C
B Cout
1T 3T
Cin

Tiempo Total = ( 2n + 1 ) T

B3 A3 B2 A2 B1 A1 B0 A0

C3 C2 C1 C0
9T
FA 7T
FA 5T
FA 3T
FA
8T 6T 4T 2T
C4
S3 S2 S1 S0
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 21
C IRCUITO RESTADOR

 Puesto que se trabaja con números expresados en


complemento a 2 (C2) → C2(B) = C1(B) + 1.
 A - B = A + (C1(B) + 1)

B3 A3 B2 A2 B1 A1 B0 A0

C3 C2 C1 C0=1
FA FA FA FA
C4
S3 S2 S1 S0

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 22


C IRCUITO S UMADOR -R ESTADOR

S/R Bi Entrada al FA

0 0 0
0 1 1
Tiempo Total = 2 ( n + 1 ) T
1 0 1
1 1 0

B3 A3 B2 A2 B1 A1 B0 A0
S/R

C3 C2 C1
FA FA FA FA C0
C4
S3 S2 S1 S0

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 23


D ETECCIÓN DE DESBORDAMIENTO

Sumador-Restador en C2 con detección de desbordamiento.


B3 A3 B2 A2 B1 A1 B0 A0
S/R

C3 C2 C1
FA FA FA FA C0
C4
S3 S2 S1 S0

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 24


D ETECCIÓN DE DESBORDAMIENTO

1. Caso suma de dos positivos

C4 C3 C2 C1
0 1 1 1
0 1 1 1 (+7)
0 1 1 1 (+7)
1 1 1 0 ¿ -2 ? → OV

2. Caso suma de dos negativos

C4 C3 C2 C1
1 0 1 1
1 0 0 1 (-7)
1 0 1 1 (-5)
0 1 0 0 ¿ 4 ? → OV

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 25


S UMADOR CON ANTICIPACIÓN DE ACARREO (CLA)

A P
 Carry Lookahead Adder (CLA) G
S
B
Cout
 Suponer A y B números de 4 bits Cin

 Señal generadora de acarreo : Gi = Ai  Bi


Pi = Ai  Bi
 Señal propagadora de acarreo: 
Pi = Ai + Bi
 Acarreo de la etapa i: Ci = Gi + Pi  Ci-1

 Particularizando para A y B:
C0 = G0 + P0  C-1
C1 = G1 + P1  C0
C2 = G2 + P2  C1
C3 = G3 + P3  C2

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 26


S UMADOR CON ANTICIPACIÓN DE ACARREO (CLA)

 Desarrollando las expresiones y poniéndolas en función de C-1:


C0 = G0 + P0  C-1
C1 = G1 + P1  G0 + P1  P0  C-1
C2 = G2 + P2  G1 + P2  P1  G0 + P2  P1  P0  C-1
C3 = G3 + P3  G2 + P3  P2  G1 + P3  P2  P1  G0 + P3  P2  P1  P0  C-1

A P
S
B G
Cout
Cin

 Todos los acarreos dependen de Ai y Bi (y de C-1).


 Estas expresiones se resuelven como suma de productos.
 Tres niveles de puertas lógicas para obtener cada uno de los acarreos.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 27


S UMADOR CON ANTICIPACIÓN DE ACARREO (CLA)

B3 A3 B2 A2 B1 A1 B0 A0

C2 C1 C0 C-1
FA FA FA FA
G3 P3 G2 P2 G1 P1 G0 P0
S3 S2 S1 S0

C3
Generador de Acarreo Anticipado

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 28


S UMADOR CON ANTICIPACIÓN DE ACARREO (CLA)

B3 A3 B2 A2 B1 A1 B0 A0

C2 C1 C0 C-1
FA 3T FA 3T FA 3T
FA
4T 4T 4T 2T
G3 P3 G2 P2 G1 P1 G0 P0
1T 1T S3 1T 1T S2 1T 1T S1 1T 1T S0

C3
Generador de Acarreo Anticipado (2T)

A P
S 4T
G Sumadores construidos
B
Cin con semisumadores
3T

http://www.ecs.umass.edu/ece/koren/arith/simulator/Add/lookahead/
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 29
S UMADOR CON ANTICIPACIÓN DE ACARREO (CLA):
E JEMPLO DE 8 BITS

B7 A7 B6 A6 B5 A5 B4 A4 B3 A3 B2 A2 B1 A1 B0 A0

C6 C5 C4 C3 C2 C1 C-1
FA FA FA FA FA FA FA C0 FA

G7 P7 G6 P6 G5 P5 G4 P4 G3 P3 G2 P2 G1 P1 G0 P0
S7 S6 S5 S4 S3 S2 S1 S0

C7
Generador de Acarreo Anticipado Generador de Acarreo Anticipado

Calcula los retardos en este CLA suponiendo que los sumadores se


construyen con semisumadores.

Compara el resultado con el de un sumador CPA de 8 bits.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 30


L A MULTIPLICACIÓN

 Algoritmo de sumas y desplazamientos

 Si el multiplicando es de n bits y el multiplicador de m bits, entonces el


producto tendrá una longitud de n+m bits.

 Multiplicación binaria: sencilla ya que hay que multiplicar por 1 o por 0.

Multiplicando 5 3 2 1 0 0
Multiplicador 4 3 1 1 0
5 3 2 0 0 0
1 5 9 6 1 0 0
2 1 2 8 1 0 0 0
Producto 2 2 9 2 9 2

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 31


M ULTIPLICACIÓN BINARIA SIN SIGNO
Versión preliminar
Repetir n veces
Si el bit 0 del multiplicador=1 entonces
Sumar el multiplicando a la mitad izquierda del
producto y colocar el resultado en la mitad izquierda
del producto.
Fin entonces
Desplazar 1 bit a la derecha el registro producto
Desplazar 1 bit a la derecha el registro multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 32


M ULTIPLICACIÓN BINARIA SIN SIGNO
Versión preliminar

Repetir n veces
Si multiplicador[0]=1 entonces
LHProducto=Multiplicando+LHPro
ducto
Fin entonces
Desp>> 1bit prod.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 33


M ULTIPLICACIÓN BINARIA SIN SIGNO
Versión preliminar
Multiplicando 1 0 1 1 11d
Multiplicador 1 1 0 1 13d
Repetir n veces
Si multiplicador[0]=1 entonces
LHProducto=Multiplicando+LHPro
Cargamos el multiplicando y el ducto
multiplicador en los registros Fin entonces
correspondientes y ponemos el
Desp>> 1bit prod.
registro Producto a cero
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 35


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 1 1 0 1 Repetir n veces
Si multiplicador[0]=1 entonces
1 0 1 1 LHProducto=Multiplicando+LHPro
1. Como el bit de la derecha de ducto
Multiplicador es 1, se suma Fin entonces
Multiplicando y Producto. El
Desp>> 1bit prod.
resultado queda en producto.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 36


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 1 1 0 Repetir n veces
Si multiplicador[0]=1 entonces
0 1 0 1 1 LHProducto=Multiplicando+LHPro
2. Desplazamos a la derecha ducto
Multiplicador y Producto. Fin entonces
Desp>> 1bit prod.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 37


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 1 1 0 Repetir n veces
Si multiplicador[0]=1 entonces
0 1 0 1 1 LHProducto=Multiplicando+LHPro
3. El bit de la derecha de ducto
Multiplicador es 0. No se realiza la Fin entonces
suma.
Desp>> 1bit prod.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 38


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 0 1 1 Repetir n veces
Si multiplicador[0]=1 entonces
0 0 1 0 1 1 LHProducto=Multiplicando+LHPro
4. Desplazamos a la derecha ducto
Multiplicador y Producto. Fin entonces
Desp>> 1bit prod.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 39


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 0 1 1 Repetir n veces
Si multiplicador[0]=1 entonces
0 0 1 0 1 1 LHProducto=Multiplicando+LHPro
5. Como el bit de la derecha de
1 0 1 1 ducto
Multiplicador es 1, se suma Fin entonces
Multiplicando y Producto. El 1 1 0 1 1 1
Desp>> 1bit prod.
resultado queda en producto.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 40


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 0 0 1 Repetir n veces
Si multiplicador[0]=1 entonces
0 1 1 0 1 1 1 LHProducto=Multiplicando+LHPro
6. Desplazamos a la derecha ducto
Multiplicador y Producto. Fin entonces
Desp>> 1bit prod.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 41


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 0 0 1 Repetir n veces
Si multiplicador[0]=1 entonces
0 1 1 0 1 1 1 LHProducto=Multiplicando+LHPro
7. Como el bit de la derecha de
1 0 1 1 ducto
Multiplicador es 1, se suma
Multiplicando y Producto. El 1 0 0 0 1 1 1 1 Fin entonces
Desp>> 1bit prod.
resultado queda en producto.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 42


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 1
Multiplicador 0 0 0 0 Repetir n veces
Si multiplicador[0]=1 entonces
1 0 0 0 1 1 1 1 LHProducto=Multiplicando+LHPro
8. Desplazamos a la derecha ducto
Multiplicador y Producto. Fin entonces
El resultado final queda en el
Desp>> 1bit prod.
registro P de 2n bits.
Desp>> 1bit multiplicador
Fin repetir

Multiplicando Despl. derecha


n bits
Multiplicador
n bits
Suma
ALU
Despl. derecha

C Producto Control
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 43


M ULTIPLICACIÓN BINARIA SIN SIGNO
Versión final
Repetir n veces
Si el bit 0 del registro producto=1 entonces
Sumar el multiplicando a la mitad izquierda del
producto (prodH) y colocar el resultado en la mitad
izquierda del producto → prodH=prodH + multiplicando
Fin entonces
Desplazar 1 bit a la derecha el registro producto
Fin repetir

Multiplicando
n bits Multiplicador

Suma
ALU
Despl. derecha

Producto Multiplicador Control


C
Escribir
P
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 44


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 10d Repetir n veces


Multiplicador 0 1 0 1 5d Si producto[0] =1 entonces
prodH=prodH + multiplicando

Iteración 0 Fin entonces


valores iniciales Desp>> 1bit producto
Fin repetir

1010

Suma
ALU
Despl. derecha

0000 0 1 0 1 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 46


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 1 0 1 Si producto[0] =1 entonces
1 0 1 0 prodH=prodH + multiplicando

Iteración 1 Fin entonces


suma Producto Desp>> 1bit producto
y Multiplicando Fin repetir

1010

Suma
ALU
Despl. derecha

1010 0 1 0 1 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 47


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 1 0 Si producto[0] =1 entonces
0 1 0 1 0 prodH=prodH + multiplicando

Iteración 1 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0101 0 0 1 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 48


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 1 0 Si producto[0] =1 entonces
0 1 0 1 0 prodH=prodH + multiplicando

Iteración 2 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0101 0 0 1 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 49


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 1 Si producto[0] =1 entonces
0 0 1 0 1 0 prodH=prodH + multiplicando

Iteración 2 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0010 1 0 0 1 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 50


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 1 Si producto[0] =1 entonces
0 0 1 0 1 0 prodH=prodH + multiplicando

Iteración 3 1 0 1 0 Fin entonces


suma Producto 1 1 0 0 1 0 Desp>> 1bit producto
y Multiplicando Fin repetir

1010

Suma
ALU
Despl. derecha

1100 1 0 0 1 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 51


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 0 Si producto[0] =1 entonces
0 1 1 0 0 1 0 prodH=prodH + multiplicando

Iteración 3 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0 110 0 1 0 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 52


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 0 Si producto[0] =1 entonces
0 1 1 0 0 1 0 prodH=prodH + multiplicando

Iteración 4 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0 110 0 1 0 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 53


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 0 Si producto[0] =1 entonces
0 0 1 1 0 0 1 0 prodH=prodH + multiplicando

Iteración 4 Fin entonces


desplazar P Desp>> 1bit producto
a la derecha Fin repetir

1010

Suma
ALU
Despl. derecha

0 0 11 0 0 1 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 54


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando 1 0 1 0 Repetir n veces


Multiplicador 0 0 0 0 Si producto[0] =1 entonces
0 0 1 1 0 0 1 0 prodH=prodH + multiplicando

Resultado Fin entonces


5x10 = 50 Desp>> 1bit producto
110010 Fin repetir

1010

Suma
ALU
Despl. derecha

0 0 11 0 0 1 0 Control
0
Escribir
Producto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 55


M ULTIPLICACIÓN BINARIA SIN SIGNO

Multiplicando = 1010 10d


Multiplicador = 0101 5d

Producto Multiplicando Acción Iteración


0000 0101 1010 Valores iniciales 0
1010 0101 1010 Sumar prodH + multiplicando 1
0101 0010 1010 Desplazar 1 bit a la derecha 1
0010 1001 1010 Despl. 1 bit a la derecha 2
1100 1001 1010 Sumar prodH + multiplicando 3
0110 0100 1010 Desplazar 1 bit a la derecha 3
0011 0010 1010 Desplazar 1 bit a la derecha 4
50d

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 56


M ULTIPLICACIÓN RÁPIDA ( C . COMBINACIONAL )

1T 1T
2T
A S
1T 3T
B
Cout
Cin

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 57


M ULTIPLICACIÓN BINARIA CON SIGNO
( M . TRADICIONAL )

 Supongamos números expresados en C2


 A = 1010 (-6d) y B = 0011 (+3d)
 Apliquemos algoritmo de sumas y desplazamientos
1 0 1 0 1 0 1 0
x 0 0 1 1 x 0 0 1 1
1 0 1 0 1 1 1 1 1 0 1 0
1 0 1 0 1 1 1 1 0 1 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 0 1 1 1 0 1 1 1 0

Versión errónea Versión correcta

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 58


M ULTIPLICACIÓN BINARIA CON SIGNO
( M . TRADICIONAL )

 Ejemplos:

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 59


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )
 El algoritmo de Booth simplifica el multiplicador para tratar de realizar un
menor número productos parciales buscando polinomios compuestos por
menos potencias de 2
n−2
V (m) = −mn−1 2 n −1
+  mi 2i
i =0
n−2 n−2
V (m) = −mn−1 2 n −1
−  mi 2 + 2· mi 2i
i

i =0 i =0

(
V (m) = − mn −1 2
n −1 n−2
+ mn − 2 2 +
1
) + 2·( m 2 + m 2 + + m 2 + m 2 ) =
+ m1 2 + m0 2
0
n−2
n−2
n −3
n −3
1
1
0
0

= − (m + m 2 + m 2 ) + (m 2 + m 2 + + m 2 + m 2 )
n −1 n−2 i 0 n −1 n−2 2 1
n −1
2 + mn − 2 2 + i 0 n−2 n −3 1 0

V (m) = (mn −2 − mn −1 )2n−1 + (mn −3 − mn −2 )2n−2 + + (m1 − m2 )22 + (m0 − m1 )21 + (0 − m0 )20

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 60


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )

 Supongamos Multiplicando = 2 y Multiplicador = 7 (en binario 0010 x 0111)


 Booth recodifica el 7 y lo expresa como +100-1 = 23 + 02 + 01 -10= 7
 Para recodificar añadir un 0 a la derecha del binario correspondiente
al Multiplicador. Luego recodificar cada elemento bi restando el
elemento bi+1.
 7 = 0111 -> 0111[0] -> 011|0-1 -> 01|1-1|-1 -> 0|1-1|0-1 -> 1-0|00-1
-> 100-1

0 0 1 0 Multiplicando
x +1 0 0 -1 Multiplicador según A. Booth
1 1 1 1 1 1 1 0 Restamos el multiplicando (Hacer el C2)
0 0 0 0 0 0 2 despl. (2 ceros en el multiplicador)
0 0 0 1 0 Sumamos el multiplicando
0 0 0 0 1 1 1 0
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 61
M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )
Bit n Bit n-1 Sustitución
0 0 0 (no hay transición)
1 0 -1 (transición hacia negativo)
0 1 +1 (transición hacia positivo)
1 1 0 (no hay transición)

Se establece que q-1 = 0 para calcular Booth del bit menos significativo

Ejemplo: Multiplicando = 11101110 (-18) y Multiplicador = 01111010 (0) (122)


Recodificación del multiplicador según Booth = +1000-1+1-10 = 27-23+22-21 = 122
1 1 1 0 1 1 1 0
x +1 0 0 0 -1 +1 -1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
1 1 1 1 1 1 1 1 1 0 1 1 1 0
0 0 0 0 0 0 0 0 1 0 0 1 0
1 1 1 1 0 1 1 1 0 0 0 0
1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 (-2196)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 62


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )
Inicialmente q-1=0
Repetir n veces
Si q0 = 1 y q-1 = 0 entonces
Productoh = Productoh - Multiplicando
Si q0 = 0 y q-1=1 entonces
Productoh = Productoh + Multiplicando
Desplazamiento aritmético a la derecha de Producto y q-1
Fin repetir.
Multiplicando
n bits

Suma/Resta
ALU
Despl. derecha

Producto Multiplicador q0 q-1 Control

2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 63


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )

Multiplicando = 1010 (-6)


Multiplicador = 1110 (-2)

Multiplicando Producto q-1 Acción Iteración


1010 0000 1110 0 Valores iniciales 0
1010 0000 1110 0 00 → Ninguna operación 1
1010 0000 0111 0 Despl. arit. 1 bit dcha. 1
1010 0110 0111 0 10→ prodH=prodH - multiplicando 2
1010 0011 0011 1 Despl. arit. 1 bit dcha. 2
1010 0011 0011 1 11 → Ninguna operación 3
1010 0001 1001 1 Despl. arit. 1 bit dcha. 3
1010 0001 1001 1 11 → Ninguna operación 4
1010 0000 1100 1 Despl. arit. 1 bit dcha. 4

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 64


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )

Multiplicando = 0110 (+6)


Multiplicador = 1110 (-2)

Multiplicando Producto q-1 Acción Iteración


0110 0000 1110 0 Valores iniciales 0
0110 0000 1110 0 00 → Ninguna operación 1
0110 0000 0111 0 Despl. arit. 1 bit dcha. 1
0110 1010 0111 0 10→ prodH=prodH - multiplicando 2
0110 1101 0011 1 Despl. arit. 1 bit dcha. 2
0110 1101 0011 1 11 → Ninguna operación 3
0110 1110 1001 1 Despl. arit. 1 bit dcha. 3
0110 1110 1001 1 11 → Ninguna operación 4
0110 1111 0100 1 Despl. arit. 1 bit dcha. 4

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 65


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )

Multiplicando = 1010 (-6)


Multiplicador = 0010 (+2)

Multiplicando Producto q-1 Acción Iteración


1010 0000 0010 0 Valores iniciales 0
1010 0000 0010 0 00 → Ninguna operación 1
1010 0000 0001 0 Despl. arit. 1 bit dcha. 1
1010 0110 0001 0 10→ prodH=prodH - multiplicando 2
1010 0011 0000 1 Despl. arit. 1 bit dcha. 2
1010 1101 0000 1 01 → prodH=prodH+ multiplicando 3
1010 1110 1000 0 Despl. arit. 1 bit dcha. 3
1010 1110 1000 0 00 → Ninguna operación 4
1010 1111 0100 1 Despl. arit. 1 bit dcha. 4

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 66


M ULTIPLICACIÓN BINARIA CON SIGNO
(A LGORITMO DE B OOTH )

Multiplicando = 0110 (+6)


Multiplicador = 0010 (+2)

Multiplicando Producto q-1 Acción Iteración


0110 0000 0010 0 Valores iniciales 0
0110 0000 0010 0 00 → Ninguna operación 1
0110 0000 0001 0 Despl. arit. 1 bit dcha. 1
0110 1010 0001 0 10→ prodH=prodH - multiplicando 2
0110 1101 0000 1 Despl. arit. 1 bit dcha. 2
0110 0011 0000 1 01 → prodH=prodH+ multiplicando 3
0110 0001 1000 0 Despl. arit. 1 bit dcha. 3
0110 0001 1000 0 00 → Ninguna operación 4
0110 0000 1100 1 Despl. arit. 1 bit dcha. 4

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 67


L A DIVISIÓN

 La división la podemos expresar como:


Dividendo = Cociente x Divisor + Resto
 El resto es más pequeño que el divisor. Hay que reservar el
doble de espacio para el dividendo.
 Supondremos operandos positivos.
Dividendo → 10010011 (147) 1011 (11) Divisor
10010 (18) 0110113 Cociente
1011
001110 (14)

1011
001111 (15)

1011
0100 (4) Resto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 68


DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Dividendoh = Dividendoh - Divisor


Repetir n veces
Si Dividendoh < 0 entonces
Desplazar el Dividendo a la izquierda
Dividendoh = Dividendoh + Divisor
Sino
Desplazar el Dividendo a la izquierda
Dividendoh = Dividendoh - Divisor
Fin Si
Si Dividendoh < 0 entonces
q0=0
Sino Divisor
q0=1 n bits
Fin Si
Fin Repetir Suma/Resta
Si Dividendoh < 0 entonces ALU
Dividendoh = Dividendoh + Divisor
Despl. izquierda
Fin Si
Dividendo q0 Control
Resto Cociente
2n bits

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 69


DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Inicialización: Dividendoh = Dividendoh - Divisor


Repetir n veces
Cargamos Divisor y Dividendo Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Dividendo ® 101011 (43) 0101 (5) ¬Divisor
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
0000000 0101011
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 70
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Inicialización: Dividendoh = Dividendoh - Divisor


Repetir n veces
Restamos Dividendo_H - Divisor -
0000000
Si Dividendoh < 0 entonces
0000101
Desp << Dividendo
1111011
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 0101011
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 71
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 1: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1110110 101011_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 72
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 1: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: 1110110
+ Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H+Divisor 0000101 Desp << Dividendo
1111011 Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 101011_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 73
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 1: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 1010110
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 74
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 2: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1110111 010110_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 75
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 2: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: 1110111 Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H+Divisor +
0000101 Desp << Dividendo
1111100 Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111100 010110_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 76
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 2: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111100 0101100
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 77
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 3: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111000 101100_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 78
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 3: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: +
1111000
Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H+Divisor 0000101
Desp << Dividendo
1111101
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111101 101100_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 79
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 3: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111101 1011000
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 80
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 4: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 011000_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 81
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 4: Dividendoh = Dividendoh - Divisor


1111011 Repetir n veces
Dividendo negativo: +
0000101 Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H+Divisor 0000000 Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
0000000 011000_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 82
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 4: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo positivo: Si Dividendoh < 0 entonces
Completamos con un 1 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
0000000 0110001
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 83
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 5: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
0000000 110001_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 84
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 5: Dividendoh = Dividendoh - Divisor


0000000 Repetir n veces
Dividendo positivo: -
0000101 Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H - Divisor 1111011 Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 110001_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 85
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 5: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111011 1100010
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 86
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 6: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1110111 100010_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 87
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 6: Dividendoh = Dividendoh - Divisor


0000101 Repetir n veces
Dividendo negativo: + Si Dividendoh < 0 entonces
1110111
Dividendo_H = Dividendo_H + Divisor 1111100 Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111100 100010_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 89
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 6: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111100 1000100
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 91
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 7: Dividendoh = Dividendoh - Divisor


Repetir n veces
Desplazamos a la izquierda Si Dividendoh < 0 entonces
Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111001 000100_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 92
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 7: Dividendoh = Dividendoh - Divisor


1111001 Repetir n veces
Dividendo negativo: +
0000101 Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H + Divisor 1111110 Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111110 000100_
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 93
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 7: Dividendoh = Dividendoh - Divisor


Repetir n veces
Dividendo negativo: Si Dividendoh < 0 entonces
Completamos con un 0 por la derecha Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Desp << Dividendo
Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
1111110 0001000
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 94
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Iteración 7: Dividendoh = Dividendoh - Divisor


1111110 Repetir n veces
Dividendo negativo: +
0000101 Si Dividendoh < 0 entonces
Dividendo_H = Dividendo_H + Divisor 0000011 Desp << Dividendo
Dividendoh = Dividendoh + Divisor
Sino
Esta última suma (restauración) solo la haremos Desp << Dividendo
en el caso de que el resto resulte negativo Dividendoh = Dividendoh - Divisor
Fin Si
Divisor Si Dividendoh < 0 entonces
q0=0
0000101 Sino
q0=1
n bits Fin Si
Fin Repetir
Si Dividendoh < 0 entonces
Dividendoh = Dividendoh + Divisor
Suma/Resta
Fin Si
ALU
Despl. izquierda

Control
0000011 0001000
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 95
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Resultado:
Dividendo ® 101011 101 ¬Divisor
101 1000 ¬Cociente
00
001
0011
Divisor
0011 ¬Resto
0000101
n bits

Suma/Resta
ALU
Despl. izquierda

Control
0000011 0001000
2n bits

Dividendo
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 96
DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Dividendo Divisor Acción Iteración

0000 0111 (7) 0010 (2) Valores iniciales 0


1110 0111 0010 Dividendoh - Divisor 0
1100 111_ 0010 Desplazar Izda. Dividendoh < 0  1
1110 111_ 0010 Dividendoh + Divisor 1
1110 1110 0010 Dividendoh < 0  q0 = 0 1
1101 110_ 0010 Desplazar Izda. Dividendoh < 0  2
1111 110_ 0010 Dividendoh + Divisor 2
1111 1100 0010 Dividendoh < 0  q0 = 0 2
1111 100_ 0010 Desplazar Izda. Dividendoh < 0  3
0001 100_ 0010 Dividendoh + Divisor 3
0001 1001 0010 Dividendoh >= 0 q0 = 1 3
0011 001_ 0010 Desplazar Izda. Dividendoh > 0  4
0001 001_ 0010 Dividendoh - Divisor 4
0001 0011 0010 Dividendoh >= 0  q0 = 1 4
 
Resto(1) Cociente (3)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 97


DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Dividendo Divisor Acción Iteración


00000 01101 00101 Valores iniciales (13÷5) 0
11011 01101 00101 DividendoH - Divisor 0
10110 1101_ 00101 Desplazar Izquierda. Dividendo < 0  1
11011 1101_ 00101 DividendoH + Divisor 1
11011 11010 00101 Dividendo < 0  q0 = 0 1
10111 1010_ 00101 Desplazar Izquierda. Dividendo < 0  2
11100 1010_ 00101 DividendoH + Divisor 2
11100 10100 00101 Dividendo < 0  q0 = 0 2
11001 0100_ 00101 Desplazar Izquierda. Dividendo < 0  3
11110 0100_ 00101 DividendoH + Divisor 3
11110 01000 00101 Dividendo < 0  q0 = 0 3
11100 1000_ 00101 Desplazar Izquierda. Dividendo < 0  4
00001 1000_ 00101 DividendoH + Divisor 4
00001 10001 00101 Dividendo > 0  q0 = 1 4
00011 0001_ 00101 Desplazar Izquierda. Dividendo > 0  5
11110 0001_ 00101 DividendoH – Divisor 5
11110 00010 00101 Dividendo < 0  q0 = 0 5
00011 00010 00101 DividendoH < 0  DividendoH + Divisor 5

Cociente
Resto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 98


DIVISIÓN: A LGORITMO SIN RESTAURACIÓN

Dividendo Divisor Acción Iteración


00000 01110 00100 Valores iniciales (14÷4) 0
11100 01110 00100 DividendoH - Divisor 0
11000 1110_ 00100 Desplazar Izquierda. Dividendo < 0  1
11100 1110_ 00100 DividendoH + Divisor 1
11100 11100 00100 Dividendo < 0  q0 = 0 1
11001 1100_ 00100 Desplazar Izquierda. Dividendo < 0  2
11101 1100_ 00100 DividendoH + Divisor 2
11101 11000 00100 Dividendo < 0  q0 = 0 2
11011 1000_ 00100 Desplazar Izquierda. Dividendo < 0  3
11111 1000_ 00100 DividendoH + Divisor 3
11111 10000 00100 Dividendo < 0  q0 = 0 3
11111 0000_ 00100 Desplazar Izquierda. Dividendo < 0  4
00011 0000_ 00100 DividendoH + Divisor 4
00011 00001 00100 Dividendo > 0  q0 = 1 4
00110 0001_ 00100 Desplazar Izquierda. Dividendo > 0  5
00010 0001_ 00100 DividendoH – Divisor 5
00010 00011 00100 Dividendo > 0  q0 = 1 5

Cociente
Resto

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 99


A RITMÉTICA EN C OMA FLOTANTE

 Representación para números fraccionarios


 Coma fija 1234,567
 Logarítmica log 123,456 = 2,0915122
 Coma flotante 1,234566 x 103

 Ventajas de estandarizar una representación determinada


 Posibilidad de disponer de bibliotecas de rutinas aritméticas
 Técnicas de implementación en hardware de alto rendimiento
 Construcción de aceleradores aritméticos estándar, etc.

 El estándar más empleado es el 754-1985 del IEEE.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 100


E STÁNDAR IEEE 754 PARA COMA FLOTANTE

 Formatos
 Simple precisión (32 bits)
1 bit 8 bits 23 bits
signo exponente mantisa

 Doble precisión (64 bits)


1 bit 11 bits 52 bits
signo exponente mantisa

 Cuádruple precisión (128 bits)


1 bit 15 bits 112 bits
signo exponente mantisa

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 101


E STÁNDAR IEEE 754 PARA COMA FLOTANTE

 Base del exponente 2


 Exponente representado en exceso 2q-1-1
 Exceso a 127 en simple precisión
 Exceso a 1023 en doble precisión
 Mantisa en valor absoluto; fraccionaria y normalizada con un uno
implícito a la izquierda de la coma decimal.
 Mantisa de la forma 1,XXXXXX
 El primer uno nunca estará representado
 Valores posibles entre 1,00000..... y 1,11111....
 S es el signo de la mantisa
 El valor del número representado vendrá dado por:
 (-1)S x 1,M x 2E-127 simple precisión
 (-1)S x 1,M x 2E-1023 doble precisión

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 102


E STÁNDAR IEEE 754 PARA COMA FLOTANTE

 Casos especiales
E M Valores

2 q-1 0 NaN (no un Número)


2 q-1 0 + y - según el signo de S

0 0 Cero

0 0 Números desnormalizados

 NaN resultado de operaciones tales como 0/0, − 1

 El valor cero tiene dos representaciones +0 y –0.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 103


E STÁNDAR IEEE 754 PARA COMA FLOTANTE

 Formato desnormalizado
 0,M x 2–126 simple precisión

 0,M x 2–1022 doble precisión

-1,1...11 x 2127 -1,0...01 x 2 –126 0 1,0...01 x 2–126 1,1...11 x 2 127

Sin números desnormalizados

-0,1...11 x 2-126 -0,0...01 x 2 –126 0,0...01 x 2–126 0,1...11 x 2-126

-1,1...11 x 2127 -1,0...01 x 2 –126 0 1,0...01 x 2–126 1,1...11 x 2 127

Con números desnormalizados

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 104


C ONVERSIÓN D ECIMAL -IEEE 754

 Procedimiento
 1. Representar en coma fija el número decimal.
 2. Pasar número decimal a binario.
 3. Normalizar mantisa.
 4. Normalizar exponente.
 5. Representar en formato IEEE 754

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 105


C ONVERSIÓN D ECIMAL -IEEE 754

 Ejemplo: -0.81375 x 102


 1. Representar en coma fija el número decimal.
 -81.375
 2. Pasar número decimal a binario.
 Parte entera: 81 -> 10100012
 Parte decimal: 0.375 -> 0.0112
 1010001.0112
 3. Normalizar mantisa.
 1.010001011 x 26
 4. Normalizar exponente.
 E=6+127=133 -> 100001012
 5. Representar en formato IEEE 754
1 bit 8 bits 23 bits
1 10000101 010001011000……….00

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 106


L A S UMA Y L A R ESTA

 Reglas de Suma/Resta
 1. Seleccionar el número de menor exponente y desplazar su
mantisa hacia la derecha tantas posiciones como la diferencia de
los exponentes en valor absoluto.
 2. Igualar el exponente del resultado al exponente mayor.
 3. Operar las mantisas (según operación seleccionada y signos de
ambos números) y obtener el resultado en signo y valor absoluto.
 4. Normalizar el resultado y redondear la mantisa al número de
bits apropiado.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 107


L A SUMA Y L A R ESTA

 Selección de la operación real

SA SB Operación Operación Real Valores


0 0 Suma A+B 0
0 1 Suma A-B Según resultado
1 0 Suma B-A Según resultado
1 1 Suma A+B 1
0 0 Resta A-B Según resultado
0 1 Resta A+B 0
1 0 Resta A+B 1
1 1 Resta A-B Según resultado

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 108


S UMADOR /R ESTADOR EN C OMA F LOTANTE

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 109


C IRCUITO S UMADOR /R ESTADOR

- Tenemos 2 números A y B SA EA MA

SB EB MB
- Queremos sumar/restar
- R=A+B
SR ER MR
- R=A–B

- La unidad de control se encarga CONTROL


de realizar la operación (SUMAR/RESTAR)
Activando sus señales de salida

SUMAR/
RESTAR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 110


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

0 1 0 1 0 1
Restador
Desplazador
Derecha
signo Magnitud

Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 111


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

0 1 0 1 0 1
1.1. Seleccionar el número de menor exponente.
Restador
Desplazador
Se utiliza un circuito restador para restar los exponentes.
Derecha
signo Magnitud
El resultado lo coge la Unidad de Control para el
desplazamiento de la mantisa
Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 112


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

0 Mx 1 0 Mx 1 0 Mx 1
Restador
Desplazador
2. Igualar el exponente del resultado al exponente mayor.
Derecha
signo Magnitud La Unidad de Control activa la señal correspondiente del
Multiplexor (Mx) para dejar pasar al
Incrementador/Decrementador el exponente mayor
Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 113


C IRCUITO S UMADOR /R ESTADOR

1.2. S EAmantisa del número


Desplazar
A MAde menor exponente SB EB MB
hacia la derecha tantas posiciones como la diferencia de
los exponentes en valor absoluto.

La Unidad de Control activa la señal correspondiente del


Multiplexor (Mx) para dejar pasar al desplazador la 1
0 Mx 0 Mx 1 0 Mx 1
mantisa del número de menor exponente.
Restador
Desplazador
Después indica el número de veces que tiene que
Derecha
desplazar.
signo Magnitud

Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 114


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

3. Operar las mantisas.

0 Mx está
A la entrada del sumador/restador 1 la mantisa 0 Mx 1 0 Mx 1
desplazada y la mantisa del número de mayor
Restador
exponente. Desplazador
Derecha
signo La Unidad de Control indica la operación.
Magnitud
El resultado de la operación se almacena en el
Desplazador Izquierda/Derecha. Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 115


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

4.1 Normalizar el resultado

La0 mantisa 0 Mx 1 (1,


Mx 1 resultado hay que dejarla normalizada 0 Mx 1
XXXX). Para ello, habrá que desplazar la mantisa e
Restador incrementar/decrementar el exponente Desplazador
Derecha
signo La Unidad de Control se encarga de activar las señales.
Magnitud

Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 116


C IRCUITO S UMADOR /R ESTADOR

SA EA MA SB EB MB

0 Mx
4.2 1
Redondear la mantisa 0 Mx 1 0 Mx 1
Restador La Unidad de Control se encarga de activar la señal para
Desplazador
redondear la mantisa. Derecha
signo Magnitud
Existen varias técnicas de redondeo.

Sumar/restar Sumador/
Restador
signo
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo
ADICIÓN/
SUSTRACCIÓN

SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 117


L A M ULTIPLICACIÓN EN C OMA F LOTANTE

 Reglas de Multiplicación
 1. Sumar los exponentes y restar el exceso para obtener el
exponente del resultado

 2. Multiplicar las mantisas para determinar la mantisa del


resultado

 3. Procesar los signos

 4. Normaliza y redondear si es necesario

Resultado ➔ (s1  s2) (1.MANT1 * 1.MANT2) x 2 (e1 + e2 – sesgo)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 118


L A M ULTIPLICACIÓN EN C OMA F LOTANTE

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 119


L A D IVISIÓN EN C OMA F LOTANTE

 Reglas de División
 1. Restar los exponentes y sumar el exceso para obtener el
exponente resultado
 2. Dividir las mantisas para determinar la mantisa del resultado.
 3. Procesar los signos.
 4. Normalizar y redondear si es necesario.

Resultado ➔ (s1  s2) (1.MANT1 / 1.MANT2) x 2 (e1 - e2 + sesgo)

 Procesamiento de los signos


SA SB SR
0 0 0
0 1 1
1 0 1
1 1 0
SR = S A  SB
TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 120
L A D IVISIÓN EN C OMA F LOTANTE

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 121


C IRCUITO S UMADOR /R ESTADOR

- Tenemos 2 números A y B SA EA MA

SB EB MB
- Queremos multiplicar/dividir
- R=A*B
SR ER MR
- R=A/B

- La unidad de control se encarga CONTROL


de realizar la operación (MULTIPLICAR/DIVIDIR)
Activando sus señales de salida

MULTIPLICACIÓN/
DIVISIÓN

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 122


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

EXCESO
Sumador/
Restador
Sumador/ 0 Mx 1 0 Mx 1
Sumar/
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 123


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

EXCESO
Sumador/
Restador
Sumador/ 0 Mx 1 0 Mx 1
Sumar/
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL 1.1. Sumar/Restar los exponentes . Magnitud

Se utiliza un circuito sumador/restador.


Incr./Decr. Desplazador
Izq./Dcha
La Unidad de Control activa las señales.

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 124


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

1.2. Restar/Sumar el exceso para obtener el


exponente del resultado.
EXCESO
Sumador/ Se utiliza un circuito sumador/restador.
Restador
Sumador/ La Unidad de Control
0 Mxactiva
1 las señales.
0 Mx 1
Sumar/
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 125


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

EXCESO
Sumador/
Restador
Sumador/ 0 Mx 1 0 Mx 1
Sumar/
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL 2. Multiplicar/Dividir las mantisas para determinar
la mantisa del resultado Magnitud

Incr./Decr.
La Unidad de Control activa la señal Desplazador
correspondiente de los Multiplexores (Mx) para Izq./Dcha
dejar pasar las mantisas,

Se utiliza un circuito multiplicador/divisor. Redondeo

MULTIPLICACIÓN La Unidad de Control activa las señales.


/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 126


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

3. Procesar los signos.


EXCESO
Sumador/ La Unidad de Control realiza la XOR de los signos
Restador de los operandos.
Sumador/ 0 Mx 1 0 Mx 1
Sumar/
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 127


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

4.1 Normalizar el resultado


EXCESO
Sumador/ La mantisa resultado hay que dejarla normalizada (1,
XXXX). Para ello, habrá que desplazar la mantisa e
Restador incrementar/decrementar el exponente
Sumador/ 0 Mx 1 0 Mx 1
Sumar/ La Unidad de Control se encarga de activar las señales.
restar
Sumar/ Restador
restar

Multiplicar/dividir Multiplicador
/Divisor
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 128


C IRCUITO M ULTIPLICADOR /D IVISOR

SA EA MA SB EB MB

EXCESO
Sumador/ 4.2 Redondear la mantisa
Restador
La Unidad de Control se encarga de activar la señal para
Sumador/
redondear la mantisa. 0 Mx 1 0 Mx 1
Sumar/
restar
Sumar/ Restador
restar Existen varias técnicas de redondeo.

Multiplicar/dividir Multiplicador
/Divisor
CONTROL
Magnitud

Incr./Decr. Desplazador
Izq./Dcha

Redondeo

MULTIPLICACIÓN
/DIVISIÓN
SR ER MR

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 129


T ÉCNICAS DE R EDONDEO

 Las técnicas de redondeo consisten en limitar el número de bits al


disponible en el sistema de representación utilizado.
 Normalmente las ALU utilizan bits de guarda que luego deben eliminar.
 Dada una cantidad C, y un sistema de representación que permite
representar los valores V0, V1, … Vr.
 El redondeo consiste en asignar a C una representación R que se le
aproxime. Si Vi-1< C < Vi el redondeo consiste en asignar Vi-1 o Vi como
representación R de la cantidad C
 El error absoluto se define como: ε =|R - C|
 Técnicas de redondeo
 Truncamiento
 Redondeo propiamente dicho
 Bit menos significativo forzado a “uno”

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 130


T ÉCNICAS DE R EDONDEO : T RUNCAMIENTO

 Elimina los bits a la derecha que no caben en la representación.

 Es fácil de implementar.
 El error del resultado es siempre por defecto.
 El error puede crecer rápidamente (p. ej. en
operaciones consecutivas)

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 131


T ÉCNICAS DE R EDONDEO : R EDONDEO AL MÁS
PRÓXIMO

 El resultado de redondea al número representable más


próximo:

Si |Vi-1 – C|< |Vi – C| → R ≡ Vi-1 si no Vi

Ejemplo: representación con 8 bits de punto implícito

C = 0,01100000 01 ≡ 0,375976563

Vi-1=0,01100000 ≡ 0,375 (número representable anterior)

Vi = 0,01100001 ≡ 0,37890625 (número representable posterior)

|Vi-1 – C| = 0,000976563 R= 0,01100000 (más próximo)

|Vi – C| = 0,00390625

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 132


T ÉCNICAS DE R EDONDEO : B IT MENOS SIGNIFICATIVO
FORZADO A 1

 Consiste en truncar y forzar el bit menos significativo a “uno”

 Es muy rápido, tanto como el truncamiento


 Sus errores son tanto por defecto como por exceso.

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 133


EJERCICIO 1

 Sumar los números A y B según el estándar IEEE 754 en simple


precisión teniendo en cuenta las tres técnicas de redondeo.

A 0 01111111 000000000000……….00

B 0 01100110 000000000000……….00

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 134


EJERCICIO 2

 Obtener el resultado de la operación A+B y AxB en el formato


IEEE 754 de los siguientes números representados en este
formato. Para obtener el resultado especificar los pasos
seguidos utilizando el algoritmo de suma y multiplicación
estudiado para números representados en el IEEE 754. Expresar
el resultado en hexadecimal.

A= C1340000 B= 3F980000

TEMA 2. UNIDAD ARITMÉTICO-LÓGICA 135

También podría gustarte