You are on page 1of 22

Estructura y Tecnología de Computadores

Módulo G. Estructura del procesador

Tema 15. Aritmética

José Manuel Mendías Cuadros


Dpto. Arquitectura de Computadores y
Automática Universidad Complutense de Madrid

contenidos

1. Introducción
Concepto de aritmética. La aritmética en el computador.
2. Aritmética entera sin signo
Representación en binario puro. Suma con propagación de acarreo. Suma con anticipación de
acarreo. Resta. Comparación. Multiplicación secuencial por sumas y desplazamientos.
Multiplicación combinacional. División secuencial con restauración. División secuencial sin
restauración. División combinacional.
3. Aritmética entera con signo
Representaciones: C2, MS, C1 y sesgada. Extensión de signo. Negación. Suma. Resta.
Multiplicación.
4. Aritmética real en punto fijo
Representación.
5. Aritmética real en punto flotante
Representación. Estándar IEEE 754. Suma. Resta. Multiplicación. División.

estructura y tecnología de computadores


3

1. introducción
Concepto

 En un computador digital cualquier información se representa por una colección de dígitos


binarios de longitud fija: ( xn-1, xn-2,..., x1, x0 )
 La aritmética del computador cubre:
 El estudio de las diferentes interpretaciones de dicha secuencia de dígitos como números
 El desarrollo de algoritmos de manipulación de secuencias de dígitos que reproduzcan
coherentemente las operaciones aritméticas presentes en los sistemas numéricos
 La implementación eficiente de dichos algoritmos como circuitos hardware
4

1.introducción
Tipos de sistemas numéricos más comunes:
 Naturales: cubierta por la aritmética entera sin signo
 Enteros: cubierta por la aritmética entera con signo
 Reales: cubierta por la aritmética en punto fijo y por la aritmética en punto flotante
La aritmética en el computador
 El conjunto de elementos representables con n bits es finito y los sistemas numéricos son
finitos,
ALUpor lo que aparecen:
 La (unidad aritmético-lógica) es el módulo hardware ubicado en la CPU
 Problemas de saturación
encargado de realizar (overflow):
las operaciones un número no es representable
aritméticas
 Problemas de precisión: un número es representado por otro número cercano
 Toma sus operandos de los registros de la CPU
 Los resultados que genera se almacenan también en registros de la CPU
estructura y tecnología de computadores
 Activa indicadores (flags) como consecuencia de las excepciones que detecte en la ejecución
de las operaciones aritméticas. Dichos indicadores son visibles al programador y suelen
almacenarse en el registro de estado.
 El controlador de la CPU genera señales que gobiernan el funcionamiento de la ALU
 Adicionalmente pueden existir coprocesadores aritméticos: circuitos esclavos
externos a la CPU especializados en realizar operaciones aritméticas complejas
 Un algoritmo aritmético puede implementarse mediante:
 un circuito combinacional
 un circuito secuencial que genere sus propias fases, es decir con un controlador propio
 un circuito secuencial que no genere sus fases, es decir controlado por una unidad de
control externa (p.e. la de la CPU)
 mediante la ejecución de un programa

estructura y tecnología de computadores


5

2. aritmética entera sin signo

 La representación más habitual es la binaria pura n 1

El valor de la secuencia de n bits ( x , x ,...,


n-1 x n-21
, x ) 0es: 2 x
i
i

i 0

a secuencia se divide el número sucesivamente por 2. Cada uno de los restos determinan los dígitos (comenzando por el menos significativo) que forman la secuencia.

entación se dice que es:


: cada número tiene una única representación.
hted): el valor de cada dígito depende de un factor del escala que tiene asociado.
a uno de los factores de escala depende de la posición del dígito asociado.
ctores de escala son potencias consecutivas de un mismo número, en este caso el 2.

estructura y tecnología de computadores

2. aritmética entera sin signo: suma


10+3 = 13 11+7 = 18 = 16 + 2

1 1111 acarreos Primera propuesta


 diseñar una celda combinacional que, tomando dos
1010 1011 sumando dígitos y un posible acarreo anterior, genere la suma y
+ 0011 + 0111 sumando un acarreo posterior
 replicar la celda tantas veces como dígitos tenga el
1101 10010 suma número

 Método tradicional de suma:


 Obtener cada uno de los dígitos de la suma sumando de derecha a izquierda los dígitos de los
sumandos. La tabla de sumar es:
 0+0=0
 0+1=1
 1+0=1
 1 + 1 = 1 y me llevo una (acarreo)
 Cuando se produce un acarreo debe sumarse al resultado de sumar los dos siguientes dígitos
 Para dos sumandos de n bits la suma puede requerir hasta n+1 bits. Para sumandos de n y m
bits, la suma puede ocupar como máximo max(n,m)+1 bits
 El bit sobrante se denomina acarreo (carry).
 El bit de acarreo es el indicador de desbordamiento en la suma sin signo.
 Habitualmente la suma y los sumandos se representan mediante el mismo número de bits, por ello
cuando la suma no es representable la ALU debe avisarlo.

estructura y tecnología de computadores


7

2. aritmética entera sin signo:


Sumador con propagación de acarreos
bit del
bit del
primer
segundo
xi yi ci si ci+1 sumando
sumando
0 0 0 0 0
Segunda propuesta
0 1 0 1 0 La propagación del acarreo añade 2 niveles de puertas por bit calculado:
1 0 0 1 0 1 puerta = 0.1 ns
1 1 0 0 1 sumar 32 bits = 6.4 ns
tciclo (200 MHz) = 5 ns
acarr
eo de

0 0 1 1 0

acarre
Obtener por anticipado los acarreos y
0 1 1 0 1 determinar por anticipado si van a propagarse usando únicamente los sumandos:

o de
1 0 1 0 1 se genera un acarreo salida (independientemente del carry de entrada) cuando xi = yi = 1
1 1 1 1 1 el acarreo de entrada se
propaga cuando xi = 1 ó yi = 1
si (xi  yi )  ci
ci 1 x i y i  xi ci  c i
bit de
y i la suma
x y  (x  y )
c
i i i i i

x3 y3 x2 y2 x1 y1 x0 y0

s3 s2 s1 s0
estructura y tecnología de computadores

2. aritmética entera sin signo: suma


Sumador con anticipación de acarreos bit del bit del
primer segundo
Para el bit i: sumando sumando
 Se genera un acarreo cuando:Gi xi yi
 Se propaga un acarreo cuando:Pi xi  yi
 Expresando la suma y del acarreo en función de los generación
anteriores funciones queda: de acarreo
si (xi  yi )  ci Pi  ci
acarre

ci 1 xi y i  xi c i  ci y i xi y i  (xi  y i ) ci Gi  Pi propagación


o de

c i de acarreo

unidad de anticipación de acarreos 0 c1 G0  P0


c0 c 2 G1 
P1 c1 bit de
x3 y3x2 y2x1 y1x0 y0 la suma
G1  P1 G0  P1 P0 c0
c3 G2  P2 c 2
0 G2  P2 G1  P2 P1 G0  P2 P1
P0 c0 c 4 G3  P3 c3

s3 s2 s1 s0 G3  P3 G2  P3 P2 G1  P3 P2 P1 G0  P3 P2 P1 P0 c0

estructura y tecnología de computadores


7

2. aritmética entera sin signo:


El número máximo de niveles de puertas es 4 para cualquier bit de la suma
Sin embargo, conforme aumenta el número de bits el número de términos producto y el número de factores en ellos crece demasiado: para 32 bits el cálculo de c

estructura y tecnología de computadores


9

2. aritmética entera sin signo:


Tercera propuesta
 Realizar los cálculos a varios niveles en cascada de manera que existan “unidades de anticipación de
arrastres de conjuntos de unidades de anticipación de arrastres”.
 Para ello, las unidades de anticipación de arrastres, en lugar de generar un acarreo final, deben generar
señales de propagación de acarreo de grupo y de generación de acarreo de grupo:
 Para 4 bits, dichas señales resultan:
G* G3  G2 P3  G1 P2 P3  G0 P1
P2 P3 P * P0 P1 P3 P4
 El acarreo de salida se calcula como: cout G * P * cin
 Cada nuevo nivel en cascada añade 2 niveles de puertas para cualquier bit de la suma

u.a.a. 0

u.a.a. u.a.a. u.a.a. u.a.a. 0

0
s15 s14 s13 s1 s11 s10 s9 s8 s7 s5 s4 s3 s2 s1 s0
2
s6
Otra posible alternativa es diseñar sumadores con enfoques mixtos. Por ejemplo para 32 bits utilizar 4 sumadores con propagación de arrastre de 4 bits que gener

estructura y tecnología de computadores

10

2. aritmética entera sin signo: resta


9-7 = 2 7-9 = 14 = 16 - 2 Alternativas
diseñar un restador específico siguiendo un proceso análogo al realizado para la suma
11 1 acarreos
aprovechar que x - y = x + (-y) y utilizar un sumador con signo y un módulo que niegue aritméticamente al sustraendo.
1001 0111 minuendo
- 0111 - 1001 sustraendo
0010 1110 resta
 Método tradicional de resta:
 Obtener cada uno de los dígitos de la resta restando de derecha a izquierda los dígitos del
minuendo. La tabla de restar es:
 0-0=0
 0 - 1 = 1 y me llevo una (acarreo)
 1-0=1
 1-1=0
 Cuando se produce un acarreo debe sumarse al siguiente dígito del substraendo (o restarse al siguiente
dígito del minuendo)
 Si el minuendo y el sustraendo son números de n bits
 minuendo sustraendo, la resta es positiva y requiere un máximo de n bits
 minuendo sustraendo, la resta es negativa y se produce un acarreo al sumar el último dígito
 El bit de acarreo final es el indicador de desbordamiento de la resta sin signo
 Cuando el resultado es negativo (y no representable en binario puro), este procedimiento obtiene un
patrón de bits que coincide con la representación en complemento a dos del número negativo. En ese
caso, el número que puede requerir un máximo de n+1 bits para representarse

estructura y tecnología de computadores


1

2. aritmética entera sin signo: comparación

 Método tradicional de comparación:


 Para comparar dos números x e y de igual tamaño, se recorren dígito a dígito de izquierda a
derecha:
 si los dígitos son iguales se pasa al siguiente dígito
 si xi > yi entonces x > y
 si xi < yi entonces x < y
 si no quedan más dígitos por comparar x = y
estructura y tecnología de computadores
Alternativas
diseñar un comparador específico siguiendo un proceso análogo al realizado para la suma
utilizar el acarreo de la resta para comparar:
para comparar x e y, realizar la operación x - y
si se produce un desbordamiento y > x, en caso contrario y x
para decidir si y < x ó si y = x, se utiliza una red de puertas NXOR y AND

12

2. aritmética entera sin signo: multiplicación


1113 = 143
Primera propuesta secuencial
usar 3 registros: multiplicando, multiplicador y producto
1011 multiplicando para poder usar un sumador de 2 entradas, en cada iteración sumar el producto parcial obtenido a la suma de los
para alinear correctamente los productos parciales, en cada iteración desplazar el multiplicando a la izquierda
1101 multiplicador para leer del mismo lugar cada uno de los bits del multiplicador, en cada iteración desplazarlo a la derecha
1011
0000 productos
1011 parciales
+ 1011
10001111 producto

 Método tradicional de multiplicación :


 Obtener los productos parciales recorriendo el multiplicador bit a bit de derecha a izquierda:
 si el bit es un 0, el producto parcial es 0
 si el bit es un 1, el producto parcial es una copia del multiplicando
 Cada producto parcial debe estar desplazado una posición a la izquierda respecto al
producto parcial anterior
 Una vez calculados todos los productos parciales se suman para obtener el producto
 Para un multiplicando de n bits y un multiplicador de m bits el producto ocupa como
máximo n+m bits

estructura y tecnología de computadores


1

2. aritmética entera sin signo:


m Mhigh Mlow S0 : cargar multiplicador en m
cargar multiplicando en Mlow
mlsb 2n
borrar M high
borrar P

Algoritmo de
Ruta de

S1 : si mlsb = 1 entonces P  P+M


2n
 si mlsb = 0 entonces P  P+0 S2 : desplazar M a la izquierda
2n desplazar m a la derecha
si S1-S2 no se han repetido n veces, ir a S1
P

tras m M P
Segunda propuesta secuencial
S0 1101 00001011 00000000  en cualquier estado la mitad de los bits del
S1 1101 00001011 00001011 multiplicando son 0
S2 0110 00010110 00001011  los bits menos significativos del producto no cambian
una vez formados (el multiplicando se desplaza a izquierda insertando ceros por la derecha)
S1 0110 00010110 00001011 desplazar el producto a la derecha en lugar de hacerlo a la izquierda con el multiplicando
S2 0011 00101100 00001011 para poder usar un sumador de n bits, sumar el multiplicando a los n bits más significativos del producto ¡cuida
S1 0011 00101100 00110111
S2 0001 01011000 00110111
S1 0001 01011000 10001111
S2 0000 10110000 10001111

estructura y tecnología de computadores

14

2. aritmética entera sin signo: multiplicación

m M S0 : cargar multiplicador en m cargar multiplicando en M borrar c


mlsb borrar P
n
S1 : si mlsb = 1 entonces Phigh  Phigh+M
si mlsb = 0 entonces Phigh  Phigh+0 S2 : desplazar P a la derecha insertando c
Algoritmo de
Ruta de

desplazar m a la derecha
n  si S1-S2 no se han repetido n veces, ir a S1
n

cP high Plow

tras m M c P
S0 1101 1011 0 00000000 Tercera propuesta secuencial
S1 1101 1011 0 10110000 en cualquier estado el número bits desperdiciados en el producto coincide con el número de bits con informació
S2 0110 1011 0 01011000 producto y multiplicador se desplazan a la derecha
usar el registro producto para acumular en su parte alta los productos parciales y para almacenar en su parte ba
S1 0110 1011 0 01011000
S2 0011 1011 0 00101100
S1 0011 1011 0 11011100
S2 0001 1011 0 01101110
S1
S2 0000
0001 1011
1011 1 1 10001111
00011110

estructura y tecnología de computadores


1

2. aritmética entera sin signo:


Multiplicador secuencial por sumas y desplazamientos

M S0 : cargar multiplicador en Plow cargar multiplicando en M borrar c


n
borrar Phigh
S1 : si Plsb = 1 entonces Phigh  Phigh+M

Algoritmo de
si Plsb = 0 entonces Phigh  Phigh+0 S2 : desplazar P a la derecha insertando c
Ruta de

n  si S1-S2 no se han repetido n veces, ir a S1


nPlsb

c Phigh Plow

tras M c P
S0 1011 0 00001101
S1 1011 0 10111101
S2 1011 0 01011110
S1 1011 0 01011110
S2 1011 0 00101111
S1 1011 0 11011111
S2 1011 0 01101111
S1 1011 1 00011111
S2 1011 1 10001111
estructura y tecnología de computadores

16

2. aritmética entera sin signo: multiplicación


Primera propuesta combinacional
multiplicando
diseñar una celda combinacional que, tomando un dígito del multiplicando, otro del multiplicador y otro del producto parcial anterior, genere un bit del siguiente produ
replicar la celda tantas veces como bits parciales haya que generar
M3 M2 M1 M0
0 0 0 0

m0
0

m1
multiplica

m2
0

m3
0

P7 P6 P5 P4 P3 P2 P1 P0

producto

estructura y tecnología de computadores


1

2. aritmética entera sin signo:


bit del producto bit del
parcial multiplicando

bit del
multiplicador
Segunda propuesta combinacional
Adaptar cada una de las celdas según el lugar que ocupan dentro del multiplicador
acarreo acarreo
de salida  de entrada

0 Mi Mi
bit del nuevo
producto parcial

m0 m0

=
 0 0

estructura y tecnología de computadores

18

2. aritmética entera sin signo: multiplicación

Multiplicador combinacional (4 bits)


M3 M2
M1 M0

m0

m1
0

m2
0

m3
0

P7 P6 P5 P4 P3 P2 P1 P0

estructura y tecnología de computadores


1

2. aritmética entera sin signo:


1 0 1 1

0
1 0 1
111
000 0
0
1 0 1 1
0 1 0 1 1 1 0
0 1 0 1
0
10 1 1
0 1 11 1 1 0
11 0 1
0

1 0 0 0 1 1 1 1

estructura y tecnología de computadores

20

2. aritmética entera sin signo: división


dividendo
Primera propuesta secuencial
10010011 1011 divisor usar 3 registros: resto/dividendo, divisor y cociente
para alinear correctamente los restos parciales y el divisor, en cada iteración desplazar el divisor a la derecha
- 1011 1101 cociente para escribir en el mismo lugar cada uno de los bits del cociente, en cada iteración desplazarlo a la izquierda
001110 para evitar tener un comparador y un restador, usar éste último para comparar: el signo de la resta determinará si
resto

- 1011 14311 = 13

001111
s

- 1011
100 resto
 Método tradicional de división :
 Obtener los restos parciales y los bits del cociente recorriendo de izquierda a derecha los bits del
dividendo:
 si el resto parcial es mayor que el divisor, añadir un 1 al cociente; el nuevo resto parcial será la resta
del resto parcial y del divisor
 si el resto parcial es menor que el divisor, añadir un 0 al cociente y ampliar el resto parcial con un
bit más del dividendo
 Este algoritmo no funciona cuando el divisor es 0: la ALU posee un indicador para avisarlo
 En cualquier caso se cumple que: dividendo = divisorcociente  resto
 Para un dividendo de n bits y un divisor de m bits, el cociente o el resto pueden llegar a ocupar n
bits (dependerá del valor de los argumentos).
 Como se suelen utilizar n-m bits para el cociente (para que divisor×cociente ocupe n bits y la división y
multiplicación sean coherentes), la ALU posee un indicador de overflow que se activará cuando el valor de
los m bits más significativos del dividendo sea mayor que el divisor

estructura y tecnología de computadores


2

2. aritmética entera sin signo:


tras D d C
S0 : cargar (0,dividendo) en D cargar divisor en ddigh borrar dlow S0 010010011 10110000 0000
borrar C
S1 : D  D(0,d) S1 111100011 10110000 0000
S2 : si Dmsb = 0 entonces S2 010010011 01011000 0000
desplazar C a la izquierda insertando un 1 S1 000111011 01011000 0000
Algoritmo de

si Dmsb = 1 entonces S2 000111011 00101100 0001


desplazar C a la izquierda insertando un 0 S1 000001111 00101100 0001
D  D+(0,d) S2 000001111 00010110 0011
desplazar d a la derecha S1 111111001 00010110 0011
si S1-S2 no se han repetido n+1 veces ir a S1
S2 000001111 00001011 0110
S1 000000010 00001011 0110
S2 000000100 00000101 1101
dhighdlow
Segunda propuesta secuencial
en cualquier estado la mitad de los bits del divisor son 0
0
2n desplazar el dividendo a la izquierda en lugar de hacerlo a la derecha con el divisor y usar un sumado
para que el cociente quepa en n bits la primera comparación debe fallar, luego ésta no es necesaria y
Ruta de

2n+1

2n+1
C Dmsb

estructura y tecnología de computadores

22

2. aritmética entera sin signo:S0división


010010011 1011 0000
S0 : cargar (0,dividendo) en D
S1
tras 10010
D 0110 1011
d 0000
C
cargar divisor en d
Algoritmo de

S3 : siborrar
Dmsb C= 0 entonces S2 001110110 1011 0000
desplazar C a la izquierda
S1 : desplazar insertando un 1
D a la izquierda S2
S3 000111100
001110110 1011
1011 0001
0001
si
S2Dmsb
: D=high
1 entonces
 Dhigh(0,d) S3
S1 000111100
01110 1100 1011
1011 0011
0001

desplazar C a la izquierda insertando un 0 S1 001111000 1011 0011


Dhigh  Dhigh+(0,d) S2 111001000 1011 0011
si S1-S3 no se han repetido n veces ir a S1 S3 001111000 1011 0110
0
n
S1 011110000 1011 0110
S2 001000000 1011 0110

d
n+1 S3 001000000 1011 1101
n+1
C Dmsb
DhighDlow
Tercera propuesta secuencial
Ruta de

 el número bits desperdiciados en el


dividendo coincide con el número de bits
con información relevante en el cociente
 usar el registro dividendo para acumular en
su parte alta los restos parciales y para
almacenar en su parte baja los bits
relevantes del cociente

estructura y tecnología de computadores


2

2. aritmética entera sin signo:

Divisor secuencial con restauración

S0 : cargar (0,dividendo) en D
cargar divisor en d tras D d
S1 : desplazar D a la izquierda
Algoritmo de

S2 : Dhigh  Dhigh(0,d) S3 : si Dmsb = 0 entonces S0 010010011 1011


Dlsb  1 S1 100100110 1011
si Dmsb = 1 entonces S2 001110110 1011
Dlsb  0, Dhigh  Dhigh+(0,d) S3 001110111 1011
si S1-S3 no se han repetido n veces ir a S1 S1 011101110 1011
S2 000111110 1011
d
S3 000111111 1011
S1 001111110 1011
0
n
S2 111001110 1011
Ruta de

S3 001111110 1011
 S1 011111100 1011
n+1n+1
Dmsb Dlsb S2 001001100 1011
Dhigh
S3 001001101 1011
Dlow

estructura y tecnología de computadores

24

2. aritmética entera sin signo: división


Cuarta propuesta secuencial
considerar la secuencia de operaciones que se realiza tras la resta en S2:
si Dmsb = 0 (“cabe”) se desplaza D a la izquierda y se resta d. Queda: 2·D-d
si Dmsb = 1 (“no cabe”) se suma d, se desplaza el resultado y se resta d. Queda: 2(D+d)-d = 2·D+d
entonces, en lugar de restaurar:
sumar o restar d en función de Dmsb
en la última iteración restaurar el resto (sumándole d) si es necesario

Divisor secuencial sin restauración tras D d


S0 010010011 1011
S1 100100110 1011
S0 : cargar (0,dividendo) en D cargar divisor en d S2 001110110 1011
S1 : desplazar D a la izquierda S2 : Dhigh  Dhigh(0,d) S3 001110111 1011
S3 : si Dmsb = 0 entonces Dlsb  1
S4 011101110 1011
si Dmsb = 1 entonces Dlsb  0 S4 : desplazar D a la izquierda
control (misma

S5 000111110 1011
Algoritmo de

S5 : si Dmsb = 0 entonces Dhigh  Dhigh(0,d) si Dmsb = 1 entonces Dhigh  Dhigh+(0,d)


ir a S3-S5 no se han repetido n-1 veces ir a S3 S3 000111111 1011
S6 : si Dmsb = 0 entonces Dlsb  1 S4 001111110 1011
si Dmsb = 1 entonces Dhigh  Dhigh+(0,d), Dlsb  0 S5 111001110 1011
S3 111001110 1011
S4 110011100 1011
S5 001001100 1011
S6 001001101 1011

estructura y tecnología de computadores


2

2. aritmética entera sin signo:


dividendo D7 D6 D5 D4 D3 D2 D1 D0

divisor0 d3 d2 d1 d0

1
C3

C2
cocie

C1

C0

Primera propuesta combinacional


diseñar una celda combinacional que sume o reste un bit del divisor a un bit del resto parcial, según el algoritmo sin restauración
resto
R3 R2 R1 R0

estructura y tecnología de computadores

26

2. aritmética entera sin signo: división


Segunda propuesta combinacional
Adaptar cada una de las celdas según el lugar que ocupan dentro del divisor
bit del
para un sumador con la entrada izquierda fija a 0: bit del resto
divisor
co = b + ci parcial

a b ci co
resultado de la
0 X X - comparación
1 0 0 0
1 0 1 1
acarreo
1 1 0 1 acarreo
1 1 1 1
de salida
 de entrada

0 0

bit del nuevo


resto parcial
1 1

=

estructura y tecnología de computadores


2

2. aritmética entera sin signo:


D7 D6 D5 D3 D2 D1 D0

D4

d3 d2 d1 d0

1
C3

C2

C1

C0

Divisor combinacional sin restauración


R3
R2 R1 R0

estructura y tecnología de computadores

28

2. aritmética entera sin signo: división


1 0 0 1 0 0 1 1

1 0 1 1
1 1 1
1
1
1
0 0 0 0 0
1 1 0 1 1 1 1
1111

1
1 1 0 0
0 1 0 0 1 1 1 1
1111

0
0 11 1
1 1 10 0 1 0 1
0 0
0 0

1
1 0 0 1 1
1 0 0

estructura y tecnología de computadores


2

2. aritmética entera sin signo:


0 1 0 0

estructura y tecnología de computadores


2

3. aritmética entera con signo


 La representación más habitual es el complemento a dos (C2)
n 2

El valor de la secuencia de n bits ( x , x ,..., n-21


n-1 x , x 0 ) es:  2n1 x 
n1 2i x i
i 0
El bit más significativo se denomina bit de signo (0 ó 1 si el número representado es positivo o negativo)
Para obtener dicha secuencia, se obtiene la representación binaria de la magnitud. A continuación si el número es negativo se complementa a dos la secuencia obtenida
complementar a dos: es invertir todos los dígitos y sumar uno al resultado
Esta representación es útil porque:
Cada número tiene una única representación (el cero tiene una única representación)
Simplifica las operaciones más simples (suma y resta)

 Extensión de signo:
Cuando se desea aumentar la longitud de la representación de un número en C2 a otra mayor, es necesario trasladar el bit de signo a la posición más a la izqu
22 (6 bits) = 010110, 22 (8 bits) = 00010110
-22 (6 bits) = 101010, -22 (8 bits) = 11101010
 Negación:
Para cambiar el signo de un número representado en C2 se utiliza la operación de complemento a dos
22 = 010110, -22 = no( 010110 ) + 1 = 101001 + 1 = 101010

estructura y tecnología de computadores

30

3. aritmética entera con signo


Otras representaciones
 Magnitud y signo (MS): n2
El valor de la secuencia de n bits ( x , x ,..., x , x ) es:
n-1 n-21 0
(1)xi 2 x
n 1
i
i 0
Para obtener dicha secuencia, se obtiene la representación binaria de la magnitud y se pone el dígito más significativo a 0 ó 1 si el número es positivo o negativo.

 Complemento a uno (C1): n 2


El valor de la secuencia de n bits ( x , x ,..., x , x ) es:  (2n1  1)x
n-1 n-21 0 n 1  i 2i x
i 0

er dicha secuencia, se obtiene la representación binaria de la magnitud. A continuación si el número es negativo se complementan los dígitos de la secuencia obtenida.

 Sesgada (biased): n 1 n 2

El valor de la secuencia de n bits ( x , x ,...,


n-1 x n-21
, x ) 0es:2 x  2 2
i 0
in 1
x ni 1  2x
n 1

i 0
i
i

Para obtener dicha secuencia, se suma 2n-1 al número y el resultado se representa en binario.

 Para cada representación la implementación de las operaciones aritméticas es diferente. Existen


dos alternativas:
 Diseñar hardware específico para cada representación
 Diseñar hardware específico para una representación y hardware de conversión para
adaptarlo al resto de las representaciones

estructura y tecnología de computadores


3
3. aritmética entera con signo: suma/resta en C2

 La suma y la resta en binario puro son coherentes con la aritmética en C2:


Pueden utilizarse los mismos módulos para realizar operaciones de suma y resta ignorando el acarreo de salida
La resta se implementa usando un sumador binario al que se adapta para que invierta el sustraendo: negando sus bits y sumando uno a través del acarreo de entra
 Sin embargo, los indicadores de desbordamiento son diferentes en C2 y en binario puro
En C2 sólo puede ocurrir acarreo al sumar dos cantidades del mismo signo o al restar dos cantidades de diferente signo. En los otros casos la cantidades se comp
Se produce un desbordamiento cuando el signo del resultado no coincide con el esperado en la operación (ej: obtener una suma negativa de sumar dos números p

x n 1 y n 1cnx2n 1y ccn 2n 1n


n 1  2c
X Y
X Y
n n
S*/R
n n

C
V + 1 C
V +
n Restador binario/C2
n
Sumador/restador binario/C2
estructura y tecnología de computadores

32

3. aritmética entera con signo: multiplicación en C2

 La multiplicación en C2 no es coherente con la multiplicación sin signo.


 Sin embargo, puede modificarse el algoritmo de suma y desplazamiento para que opere
directamente en C2. Para ello distinguiremos 3 casos posibles

1er. caso: (-5)(+5) = (-25)


multiplicando positivo No requiere
multiplicador positivo modificación 1011 1011
0101 0101
(+3)(+5) = (+15)
2do. caso: 00001011 11111011
0011 multiplicando negativo 0000000 0000000
multiplicador positivo 001011 111011
0101
0011
Extender + 00000 + 00000
correctamente
0000 el signo del 00110111 11100111
0011 dividendo
55 = 115  25 = (-5)5 
+ 0000 Al sumar los productos parciales se asume implícitamente que los bits más significativos de los sumandos
00001111
15 = 35 

estructura y tecnología de computadores


3
3. aritmética entera con signo: multiplicación en C2

3er. caso: Estudiemos la operación que se realiza cuando el multiplicador es negativo:


multiplicador negativo El multiplicador está representado en C2 luego su valor es:

(-5)(-3) = (+15) n 2

V (m) mn1 2n1   mi 2i


1011 1011
Si se ignora el signo del multiplicador (y se realiza la multiplicación teniendo en cuenta sólo los n-1
1101 1101
V (P ) V (M ) ⋅ m i 2 i
11111011 11111011
0000000 0000000
111011 111011 n2

+ 11011 + 00101 i 0


V (M )  V (m)  n1
m 2n1 
10111111 00001111 n1 2n 1
V (M ) V (m)  V (M ) m

-65  +15  El resultado buscado es V(M)·V(m), luego cuando mn-1= 1 es necesario corregir el resultado parcial
multiplicando a la mitad mas significativa de P:

En la última iteración sumar


o restar el multiplicando en
función del signo del
1 2 n1
V (M ) V (m) V (P )  V (M ) nm
multiplicador

estructura y tecnología de computadores

34

4. aritmética en punto fijo

 Se asume implícitamente que existe un punto entre dos dígitos binarios en una posición que es fija para cualquier secuencia de bits.
 Toda secuencia de n bits ( xn, ..., x0 ) con un punto implícito permite distinguir dos partes en ella: ( xk-1, ..., x0 . x-1, ..., x-m )
parte entera: el conjunto de bits anteriores al punto
parte fraccionaria: el conjunto de bits posteriores al punto
n1

k 1 m 2i x i

 El valor de la secuencia de n (k+m) dígitos es:


i 0i 1
 2 x 2x 2
i
i
i
i m  i 0

 Habitualmente no se diseña una aritmética específica para punto fijo, ya que con una pequeña adaptación se puede utilizar la aritmética
La aritmética entera es un subconjunto del punto fijo ya que el punto se considera ubicado tras el bit menos significativo
La aritmética fraccionaria es otro subconjunto del punto fijo que lo considera ubicado delante del bit más significativo
Es el programador o el diseñador del HW el encargado de alinear y corregir los resultados (por ejemplo: la suma no es necesario corregirla y la multiplicación

A  B V (a)  V (b) V (a)  V (b)A B V (a) V (b) V (a) V (b)


2m2m 2m 2m2m22m

estructura y tecnología de computadores


3

5. aritmética en punto flotante


 La representación en punto flotante está basada en la notación científica:
El punto decimal no se halla en una posición fija dentro de la secuencia de bits, sino que su posición se indica como una potencia de la base:
signoexponentesignoexponente

+ 6.02 · 10 -23 + 1.01110 · 2 -1101


mantisabase mantisa base
 En todo número en punto se flotante distinguen tres componentes:
Signo: indica el signo del número (0= positivo, 1=negativo)
Mantisa: contiene la magnitud del número (en binario puro)
Exponente: contiene el valor de la potencia de la base (sesgado)
La base queda implícita y es común a todos los números, la más común la 2.

 El valor de la secuencia de bits ( s, e , ..., e , m , ..., m ) es:


p-10q-10
(1)s V (m) 2 V (e)
 Dado que un mismo número puede tener varias representaciones (0.110·25 = 110·22 = 0.0110·26) los número suelen estar normalizad
un número está normalizado si tiene la forma 1.xx...·2xx... (ó 0.1xx ...·2xx...)
dado que los números normalizados en base 2 tienen siempre un 1 a la izquierda, éste suele quedar implícito (pero debe ser tenido en cuenta al calcular el va

estructura y tecnología de computadores

36

5. aritmética en punto flotante


Sea el siguiente formato punto flotante de 32 bits (base 2, normalizado)
1 bit 8 bits 23 bits

s e m
 El rango de valores representable por cada uno de los campos es:
 Exponente (8 bits con sesgo de 128) : -128 ... +127
 Mantisa (23 bits normalizados) : los valores binarios representables oscilan entre 1.00... y 1.11...,
es decir entre 1 y 2-2-23 ( 1.11... = 10.00... - 0.0...1 )
undeflow undeflow negativo
positivo
overflow números negativos números positivos overflow
negativo expresables expresables positivo

-(2.0-2-23)·2127 -1.0·2-128 0 1.0·2-128 (2.0-2-23)·2127


 Obsérvese que la cantidad de números representables es 232 (igual
que en punto fijo). Lo que permite la
representación punto flotante es ampliar el rango representable a costa de aumentar el espacio entre
números representable (un espacio que no es uniforme).

-n 0 n 2·n 4·n

estructura y tecnología de computadores


3
5. aritmética en punto flotante: estándar IEEE 754

 2 formatos con signo explícito, representación sesgada del exponente (sesgo igual 127), mantisa normalizada con un 1 implícito (1.M) y base 2.
precisión simple (32 bits): 1 bit de signo, 8 de exponente, 23 de mantisa
-1.0·2-126 ... (2-2-23)·2127 = 1.2·10-38 .. 3.4·1038
precisión doble (64 bits): 1 bit de signo, 11 de exponente, 52 de mantisa
-1.0·2-1022 ... (2-2-52)·21023 = 1.2·10-308 .. 3.4·10308
 2 formatos ampliados para cálculos intermedios (43 y 79 bits).
 Codificaciones con significado especial
Infinito (e=255, m=0): representan cualquier valor de la región de overflow
NaN (Not-a-Number) (e=255, m>0): se obtienen como resultado de operaciones inválidas
Número denormalizado (e=0, m>0): es un número sin normalizar cuyo bit implícito se supone que es 0. Al ser el exponente 0, permiten representar números
Cero (e=0, m=0): número no normalizado que representa al cero (en lugar de al 1)
 4 modos de redondeo:
Redondeo al más cercano
Redondeo a más infinito (por exceso)
Redondeo a menos infinito (por defecto)
Redondeo a cero (truncamiento)
 Excepciones:
Operación inválida: , 0, 00, , x mod 0, x cuando x<0, x=
Inexacto: el resultado redondeado no coincide con el real
Overflow y underflow
División por cero

estructura y tecnología de computadores

38

5. aritmética en punto flotante: suma/resta


alineamiento

6.144·102 0.06144·104 1.003644·105


9.975·104 + 9.97500·104 + 0.000500·105
10.03644·104 1.004·105
operación redondeo

estructura y tecnología de computadores


 Método de suma/resta :
 Extraer signos, exponentes y magnitudes.
 Tratar operandos especiales (por ejemplo, alguno de ellos a cero)
 Desplazar la mantisa del número más pequeño a la derecha |e1-e2| bits
 Fijar el exponente del resultado al máximo de los exponentes
 Si la operación es suma y los signos son iguales, o si la operación es resta y los signos son
diferentes, sumar las mantisas. En otro caso restarlas
 Detectar overflow de la mantisa
 Normalizar la mantisa, desplazándola a la derecha o a la izquierda hasta que el dígito más
significativo esté delante del punto.
 Redondear el resultado y renormalizar la mantisa si es necesario.
 Corregir el exponente en función de los desplazamientos realizados sobre la mantisa.
 Detectar overflow o underflow del exponente
3
5. aritmética en punto flotante: multiplicación/división

-0.1403·10-3
0.3021·106 -0.4238463·102
(-0.14030.3021)·10-3+6 + -0.0000500·102
-0.04238463·102 -0.4238·102
operación redondeo

estructura y tecnología de computadores


 Método de multiplicación/división:
 Extraer signos, exponentes y magnitudes.
 Tratar operandos especiales
 Calcular el signo del producto (o del cociente) como la o-exclusiva de los signos de los
operandos
 Calcular el exponente del producto (cociente) como la suma (resta) de los exponentes de los
operandos. Dado que esta operación provoca un sesgo doble, eliminar el sesgo sobrante,
restando (sumando) 2(numero de bits del exponente)
 Detectar desbordamiento o desbordamiento a cero del exponente
 Calcular la mantisa del producto (cociente) como la multiplicación (división) de las mantisas de
los operandos
 Normalizar, si es necesario, la mantisa y actualizar convenientemente el exponente
 Redondear el resultado y renormalizar la mantisa si es necesario.

You might also like