You are on page 1of 34

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

4 Nmeros enteros: representacin, operaciones bsicas y bloques


aritmticos combinacionales
Juan J. Navarro
Toni Juan
Primera versin: 04-2004
Versin actual: 09-2009

4.1 Repaso: Representacin y Suma de Naturales


Como hemos visto, los nmeros naturales { 0, 1, 2, } (en ingls unsigned integers, o non-negative
integers) se representan en el computador en el sistema de numeracin binario. En binario, el vector X
de n bits
X = xn 1 xn 2 x2 x1 x0

x i { 0 ,1 }

(EQ 1)

representa el valor numrico


n1

x 2

Xu =

(EQ 2)

i=0

(el subndice u indica que estamos interpretando el vector de bits como un nmero natural (unsigned)
representado en binario. Por ejemplo, el vector X = 11001 representa en binario el valor
4

X u = 1 2 + 1 2 + 0 2 + 0 2 + 1 2 , que en decimal (que es como nosotros representamos


los nmeros naturales) se representa como X u = 25 .
El rango de nmeros naturales representables en binario con n bits es:
n

0 Xu 2 1

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

(EQ 3)

Introduccin a los Computadores

En la tabla de la Figura 4.1 se muestran todos los posibles vectores de 3 bits y su valor asociado al
interpretar cada vector como un nmero natural codificado en binario. Las entradas de esta tabla se han
ordenado en funcin del valor de Xu, de menor a mayor.
X
x2 x1 x0 Xu
0
0
0
0
1
1
1
1

c3 = 1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
3
4
5
6
7

Y
n

cn

ADDn

c0

n
W

Fig. 4.1 Tabla de representacin de nmeros naturales codificados en binario con 3 bits
y sumador binario de n bits.

En la Figura 4.1 tambin se representa el smbolo del sumador binario de n bits. Las entradas de este
bloque combinacional son dos vectores de n bits X e Y, que representan dos nmeros naturales Xu e Yu,
y un bit, c0, denominado acarreo de entrada (en ingls carry in). El sumador calcula el valor Wu,
representado mediante el vector de n bits W = wn-1...w1w0 y el bit cn, denominado acarreo de salida,
tales que:
Wu = Xu + Y u + c0
0
cn =
1

si

X u + Yu + c0 2 1 y

(EQ 4)

si

X u + Yu + c0 2 1

si

X u + Yu + c0 > 2 1

(EQ 5)

Esto es, el vector de bits W representa el valor correcto de la suma X u + Y u + c 0 , cuando este resultado
puede representarse en binario con n bits. Cuando el acarreo de salida, cn, se activa indica que el
resultado correcto de la suma no es representable con n bits en binario (resultado no representable) y
por lo tanto wn-1...w1w0 no representa el resultado correcto, W u X u + Y u + c 0 . Usando la tabla de la
Figura 4.1 para realizar algunas sumas que produzcan resultados no representables, observamos que
siempre la diferencia entre el resultado correcto y el que se obtiene con 3 bits es de 8 (= 23) unidades.
Llevando esta conclusin al caso general de n bits, tenemos:
W u = Xu + Yu + c0 2

si

X u + Yu + c0 > 2 1

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

(EQ 6)

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

Otra forma de expresar la EQ (4) y la EQ (6) en una sola es:


W u = ( X u + Y u + c 0 ) mod 2

(EQ 7)

Denotamos las funciones lgicas que obtienen los bits de salida del sumador binario de n bits, en
funcin de los bits de entrada, como:
W = ADD n ( X, Y, c 0 )

(EQ 8)

c n = CARRY n ( X, Y, c 0 )

(EQ 9)

En el nombre de los operadores ADDn y CARRYn no pondremos el subndice n (tamao del sumador
binario) para el caso comn en este curso de n = 16.
La tabla de la representacin de nmeros naturales para n = 3 de la Figura 4.1 puede ayudarnos a
entender como funciona el sumador binario. Esta visin que damos a continuacin nos ser til en la
seccin siguiente. Consideremos dos situaciones:

Si tomamos una fila de la tabla, un vector de bits X (que representa el nmero Xu) y le sumamos,
con el sumador binario, el vector 001 (que representa el 1), obtenemos un nmero que est una
posicin adelante (ms hacia abajo) en la tabla, siguiendo la direccin que indica la flecha de trazo
continuo de la izquierda de la tabla. Si repetimos esta operacin, vamos avanzando en la tabla hasta
que llegamos a la fila 111 (que representa al nmero 7). En cada uno de estos casos, la
representacin de Xu+1 se obtiene correctamente y el acarreo de salida del sumador binario, c3, vale
0.

Si ahora al vector 111 le sumamos el vector 001, intentando obtener la representacin del valor 7+1,
obtenemos el vector 000 que representa el valor 0. Esto es as porque el 8, que es el resultado
correcto, no puede representarse con 3 bits. El paso del 111 al 000 se indica mediante una flecha
discontinua1 que une el final de la tabla con el principio. Este paso se detecta en el sumador binario
porque c3 vale 1, indicando resultado no representable.
Esto se puede generalizar, de forma que la representacin binaria de Xu + Yu con 3 bits puede
encontrarse contando Yu posiciones en la direccin de la flecha a partir de la fila que codifica el valor
de Xu en la tabla de la Figura 4.1. Si durante este proceso de contar pasamos del final de la tabla al
principio, el resultado no es representable con 3 bits y c3 valdr 1 (al sumar dos nmeros de 3 bits, a lo
sumo se pasa una sola vez del final de la tabla al principio).

1. Pasar la frontera del 111 al 000 en la tabla, es equivalente a hacer la operacin mod 8. As que el
sumador binario ha calculado ( 7 + 1 )modulo ( 8 ) = 0 .

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

4.2 En busca de una representacin eficiente para los nmeros enteros


En esta seccin encontramos la representacin que usan internamente los computadores para
almacenar y hacer clculos con nmeros enteros de manera efectiva. Un nmero perteneciente al

conjunto de los enteros {, 2, 1, 0, 1, 2, } (en ingls signed integer o simplemente integer) se


representa internamente en el computador, como cualquier otra informacin, mediante un vector de n
bits.
X = x n 1 x n 2 x 2 x 1 x 0 con x i { 0 ,1 } .
Definir una representacin consiste en encontrar una tabla o una expresin aritmtica (como se ha
hecho en la seccin anterior para los nmeros naturales) que para cada posible vector de bits nos
indique el nmero que representa. La frmula/tabla no puede ser la misma para los enteros que para los
naturales (Figura 4.1 o EQ (2)), ya que con esta expresin slo se obtienen nmeros positivos. Hay
muchos posibles sistemas de representar un nmero entero mediante un vector de bits, la diferencia
entre ellos estriba en lo sencillo o complicado que resulta realizar operaciones aritmticas con cada uno
de estos sistemas. Como caso ms usual de operacin aritmtica estudiaremos la suma, que adems es
una operacin bsica para clculos ms complejos como la multiplicacin. Veamos algunos sistemas de
representacin de nmeros enteros.
4.2.1

Signo y magnitud en binario

La representacin de un nmero entero mediante un vector de bits ms familiar para nosotros, puesto
que es similar a la que usamos normalmente en base 10, es la representacin en signo y magnitud en
base 2. Dado un vector X de n bits que representa al nmero entero Xsm en signo y magnitud (en ingls
sign and magnitude), el bit de ms a la izquierda del vector de bits codifica el signo, si xn-1 vale 0,
indica que el nmero es positivo y si vale 1 que es negativo, y los n-1 bits restantes representan en
binario el valor absoluto de Xsm (la magnitud de Xsm), que es un nmero natural.
La Figura 4.2 muestra en una tabla los 8 posibles vectores de 3 bits y el valor del nmero entero que
representan en signo y magnitud. La expresin algebraica general para obtener el valor de un nmero a
partir del vector de bits que lo representa tambin se muestra en la figura. De esta frmula es fcil
deducir que el rango de nmeros representables positivos y negativos es el mismo,
( 2

n1

1 ) X sm 2

n1

1 ; pero hay dos posibles representaciones del valor 0.

Repasemos ahora el algoritmo que usamos habitualmente para sumar en signo y magnitud:

cuando los operandos tienen el mismo signo, la magnitud del resultado es la suma de las
magnitudes de los operandos y el signo del resultado es el signo de los operandos;

cuando los operandos son de distinto signo, para obtener la magnitud del resultado se resta a la
magnitud mayor la menor y el signo del resultado es el signo del operando de mayor magnitud.
Este algoritmo requiere un sumador de nmeros naturales codificados en binario con n-1 bits, para
cuando los dos operandos son del mismo signo y un comparador y un restador de nmeros naturales

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

X
x2 x1 x0 Xsm
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
3
-0
-1
-2
-3

n2

xi 2

i=0
=
n2

i

xi2

i = 0

X sm

si

xn 1 = 0

si

xn 1 = 1

Fig. 4.2 Tabla de la representacin signo y magnitud en binario con 3 bits y


frmula para n bits.

codificados en binario con n-1 bits, para cuando los nmeros tienen distinto signo. Aunque la
comparacin y la resta pueden hacerse con pequeas modificaciones del sumador binario y aunque
existen algoritmos ms ptimos, podemos intuir que la suma de nmeros enteros en signo y magnitud
es ms costosa en hardware y/o en tiempo de propagacin que la suma de nmeros naturales en binario.
Por esta razn, los computadores actuales no usan la representacin en signo y magnitud para los
nmeros enteros, aunque para los humanos sea la ms familiar.
4.2.2

Otras representaciones ms efectivas

Los computadores usan una representacin en la que la suma de nmeros enteros se puede realizar con
el mismo sumador que se usa para los nmeros naturales codificados en binario, que hemos
denominado sumador binario. Sabras encontrar una representacin con estas caractersticas?
Desde luego, la representacin en signo y magnitud no cumple este objetivo para todos los nmeros. La
Figura 4.3 muestra dos ejemplos de suma de nmeros representados en signo y magnitud usando el
sumador binario. En el primer ejemplo se suman dos nmeros positivos y se obtiene el resultado
correcto. Esto es as porque la representacin en signo y magnitud de los nmeros enteros positivos es
la misma que la de los nmeros naturales representados en binario. En el segundo ejemplo, en el que se
suman dos nmeros de distinto signo, el resultado de la suma usando un sumador binario no es correcto
(a pesar de que el resultado correcto s que es representable en signo y magnitud con 3 bits).
Un posible razonamiento para encontrar una representacin en la que la suma se realice correctamente
con el sumador binario es el siguiente:

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

a)

Vectores de
bits
+

0 0 1
0 0 1
0 1 0

Suma
correcta en
Sign. y Mag.
+
=

1
1
2

b)

Vectores de
bits
+

1 0 1
0 0 1
1 1 0

Suma
correcta en
Sign. y Mag.
+

-1
1
0

Fig. 4.3 Ejemplos de suma de 2 nmeros enteros en signo y magnitud usando el


sumador binario. En el primer ejemplo el resultado es correcto, mientras que en el
segundo no.

Codificamos los nmeros positivos como en binario (como ocurre en la codificacin en signo y
magnitud en base 2), con lo que nos aseguramos que la suma de positivos ser correcta con el
sumador binario (siempre que el resultado sea representable, claro).

Cmo codificamos los negativos? Si recordamos la visin que dimos antes de como opera el
sumador binario, contando en la direccin de la flecha en la tabla de la Figura 4.1 podemos deducir
que el valor -1 se tiene que codificar como 111 (para n=3). Este es el nico vector de bits que al
sumarle, con el sumador binario, el vector 001, que como hemos dicho en el punto anterior
representa al 1, obtenemos el vector 000, que representa el 0 y es el resultado correcto de -1+1. Una
vez que hemos decidido que los positivos se codifican como en binario, tenemos que codificar los
nmeros negativos de forma que la codificacin del nmero Xs+1 sea la siguiente en la tabla a la de
Xs, avanzando en la direccin de la flecha. Por ello, el -2 debe codificarse como 110, para que al
sumarle, con el sumador de binario, el vector 001 se obtenga el vector 111, que acabamos de decidir
que representa al -1 (Llamamos Xs al valor que se representa por el vector de bits X en la
representacin que estamos buscando para nmeros enteros; la s del subndice viene de signed
integers).
En la Figura 4.4 se muestran tres posibles representaciones para los nmeros enteros con 3 bits que
cumplen la condicin de que la suma en estos sistemas se puede realizar con el sumador binario,
obtenindose el resultado correcto, excepto cuando el resultado no puede representarse con tres bits, en
cada uno de los sistemas. Podis comprobar esto con facilidad.
En qu difieren las tres representaciones, a), b) y c), de la Figura 4.4? Se diferencian en el rango, en
qu nmeros pueden representarse con 3 bits. Para cada una de las representaciones el rango es:
a) 3 X a 4 ,
b) 5 X b 2 ,
c) 4 X c 3 .
Ello hace que la deteccin de resultado no representable con 3 bits difiera en cada uno de estos tres
sistemas de representacin y sea diferente tambin con el caso de binario. Adems, en ninguno de estos

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

a)

b)

c)

X
x2 x1 x0

Xa

X
x2 x1 x0 X b

X
x2 x1 x0 X c

0
0
0
0
1
1
1
1

0
1
2
3
4
-3
-2
-1

0
0
0
0
1
1
1
1

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
-5
-4
-3
-2
-1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
3
-4
-3
-2
-1

Fig. 4.4 Tres posibles representaciones de nmeros enteros con 3 bits. Se diferencian en el rango
de valores representables pero en los tres casos la suma puede realizarse con el sumador binario
(para resultados dentro del rango).

tres sistemas, pasar de 111 al 000 (del -1 al 0) indica resultado no representable, a diferencia del caso de
binario. Esto es, el acarreo de salida del sumador binario, para estas tres representaciones, no indica
resultado de la suma no representable con n bits.
4.2.3

Complemento a 2

Cul de las representaciones de la Figura 4.4 se usa para codificar un nmero entero en un
computador? Aunque alguno de los primeros computadores no la usaba, actualmente todos usan la
representacin c), que se denomina Complemento a 2 (de forma abreviada Ca2). El Ca2, a diferencia
de las representaciones a) y b) o de otras similares que podramos inventarnos, tiene las siguientes
caractersticas:

Tiene un rango ms simtrico que las otras representaciones, aunque no es simtrico del todo ya que
puede representar un negativo mayor en valor absoluto que el mayor de los positivos (esto es
inevitable porque en este sistema el 0 tiene una sola representacin (ver Figura 4.4).

Saber el signo del nmero representado por un vector de bits es sencillo. Para saber si un nmero es
positivo o negativo slo hay que observar el valor del dgito de ms a la izquierda, si vale 0 el
nmero es positivo y si vale 1 es negativo (ver Figura 4.4). Con esto estamos considerando, como
es usual, que el 0 es un nmero positivo.

La deteccin de resultado no representable es ms sencilla que en los otros casos (esto es as por la
facilidad en la identificacin del signo y lo estudiamos ms adelante).

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

4.3 Representacin de enteros en Ca2


Se trata ahora de generalizar para n bits la representacin que hemos visto para 3 bits en la Figura 4.4 c)
Sabras escribir una tabla con la representacin para n = 8? Seguro que s, pero sera muy pesado ya
que la tabla tiene 256 entradas. Vamos a escribir solamente algunos nmeros caractersticos, por
ejemplo, la representacin de los nmeros ms pequeos y ms grandes, tanto positivos como
negativos. La Figura 4.5 repite la tabla para n = 3 y muestra la generalizacin de estos nmeros para n
= 8.
X
x2 x1 x0 X s
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

00000000

0
1
2
3
-4
-3
-2
-1

=> 0

01111111

=> 127 (2n-1-1)

10000000

=> -128 (-2n-1)

11111111

=> -1

Fig. 4.5 Tabla de la representacin en Ca2 para 3 bits y representacin


con 8 bits de algunos nmeros caractersticos.

Sabras encontrar una frmula que nos de el valor de un nmero entero a partir de los n dgitos
binarios con que est representado en Ca2? Una frmula en funcin de n es la mejor generalizacin!
En primer lugar, consideremos por separado el caso en que el valor representado, Xs, es positivo y el
caso en que es negativo.

Nmero positivo
Como la representacin de un nmero positivo en Ca2 es igual que la representacin en binario, la
frmula tiene que ser la misma que para el caso de naturales representados en binario, EQ (2). No
obstante, en este caso no hace falta que intervenga el bit de ms a la izquierda, xn-1, puesto que para
los positivos siempre vale cero.
n2

Xs =

x 2
i

para x n 1 = 0

i=0

Nmero negativo
Para la representacin de un nmero Xs negativo (xn-1 = 1) observemos la Figura 4.5. Si al dgito de
mas a la izquierda le damos el mismo peso que le corresponde en binario (2n-1) pero con signo

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

negativo y al resto de dgitos el peso y el signo positivo correspondiente a binario, obtenemos los
valores correctos de los nmeros -128 (-128 = -128 + 0) y -1 (-1 = -128 + 127, ya que de la
n2

representacin de los nmeros naturales sabemos que

= 2

n1

1 ). Generalizando

i=0

obtenemos que para los negativos:


n2

Xs = 2

n1

x 2

para x n 1 = 1

i=0

As pues, una nica frmula, tanto para los positivos ( x n 1 = 0 ) como para los negativos
( x n 1 = 1 ), es:
n2

Xs = xn 1 2

n1

x 2

(EQ 10)

i=0

4.3.1

Rango

Cul es el rango de la representacin en Ca2 para n bits? El nmero negativo con mayor valor
absoluto que se puede obtener de la EQ (10) se encuentra dando valor 1 a xn-1 y valor 0 a todos los
dems dgitos. Este nmero es el -2n-1. Por otro lado, el positivo mayor se obtiene dando valor 0 a xn-1
para que no reste nada y valor 1 a todos los dems dgitos que suman. Este nmero es el 2n-1-1. Como
todos los nmeros enteros entre estos dos estn representados, el rango es:
2
4.3.2

n1

Xs 2

n1

(EQ 11)

Extensin de rango

Dado el vector X de n bits que representa en Ca2 al nmero entero Xs, cmo se obtiene en vector W de
n+1 bits que representa a ese mismo nmero, Ws = Xs? La Figura 4.6 muestra todos los nmeros
representables en Ca2 con 3 y 4 bits. Las flechas indican como se representa con 4 bits cada uno de los
8 posibles nmeros representados con 3 bits. Generalizando esta idea, se dice que la extensin de rango
se efecta extendiendo el bit de signo. Esto es, los n bits de menos peso de la nueva representacin son
los mismos que los de la representacin original y como bit de ms peso de la nueva representacin se
replica el bit de ms peso de la original. Por ejemplo, el nmero 3 con 3 bits se representa como 011 y
con 4 bits como 0011. El nmero -3 se representa con 3 bits como 101 y con 4 como 1101. Para los
nmeros positivos la demostracin es trivial usando la EQ (10) y para demostrar el caso de los
negativos slo hay que saber que 2

n1

= 2 +2

n1

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

10

Introduccin a los Computadores

Sabras implementar un bloque combinacional para extender el rango de n a n+1 bits? En la


Figura 4.6 puede verse la implementacin para pasar de 3 a 4 bits (le denominamos SE del ingls Sign
W
w3 w2 w1 w0 Ws

X
x2 x1 x0

Xs

0
0
0
0
1
1
1
1

0
1
2
3
-4
-3
-2
-1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
1
2
3
4
5
6
7
-8
-7
-6
-5
-4
-3
-2
-1

X
n
SE

Ws = Xs

n+1
W
x2 x1 x0

w3 w2 w1 w0

Fig. 4.6 Tablas de las representaciones en Ca2 para 3 y 4 bits. Implementacin de un


bloque de extensin de rango de 3 a 4 bits.

Extension). Obsrvese que este bloque se implementa sin ninguna puerta lgica, slo requiere cables.
Que sencillo!
Sabras hacer ahora la extensin de rango de n a n + k bits? La Figura 4.7 muestra el bloque que
extiende el rango en Ca2 de 3 a 6 bits.
4.3.3

Cambio de representacin para nmeros enteros

De complemento a dos a decimal en signo y magnitud


Para encontrar el valor de un nmero entero (y representarlo en signo y magnitud decimal, que es como
estamos acostumbrados a representar los enteros) a partir de su representacin en complemento a dos
mediante el vector de n bits X = x n 1 x n 2 x 2 x 1 x 0 con x i { 0 ,1 } simplemente hay que operar
los bits de X de acuerdo con la frmula de la definicin del Ca2, EQ (10):

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

11

x2 x1 x0

3
Ws = Xs

SE
6
W

w5 w4 w3 w2 w1 w0

Fig. 4.7 Implementacin de la extensin de rango de 3 a 6 bits.

n2

Xs = xn 1 2

n1

x 2

i=0

Ejemplo 1
Qu nmero entero representa el vector de 8 bits 11001010 en complemento a 2? Aplicando la
frmula anterior tenemos que:
7

X s = 2 + 2 + 2 + 2 = 54
De decimal en signo y magnitud a complemento a dos
Vamos a ver ahora dos procedimientos para obtener los bits de la representacin de un nmero entero.
Despus de ver el algoritmo de cambio de signo veremos otra forma ms de hacerlo.
Procedimiento de las divisiones por dos. De la misma forma que se demostr como pasar un nmero
natural de decimal a binario, se puede demostrar el procedimiento para pasar un nmero entero de
decimal en signo y magnitud a Ca2. La formula de la representacin en binario y en Ca2 es casi la
misma, un sumatorio de todos los dgitos cada uno de ellos multiplicado por su peso, excepto que el
Ca2 el dgito de mas peso se resta en vez de sumarse. Esto se puede interpretar como que el dgito de
ms peso vale 0 o -1 en vez de 0 o 1. Por ello, el procedimiento para obtener los dgitos binarios de la
representacin en Ca2 a partir de un nmero decimal es similar al caso binario. En ambos casos se
obtienen los dgitos comenzando por el de ms peso hasta obtener finalmente el de menos peso. Para
binario, se divide el nmero entre 2 y el resto es el dgito de menos peso, el cociente se divide a su vez
por 2 y el resto es el siguiente dgito y se repite el proceso hasta que el cociente vale 0 y el resto es el
dgito de ms peso. Las divisiones se efectan de forma que los restos sean positivos (0 o 1, pues son
los dgitos). Esto no hace falta decirlo ya que el nmero es siempre positivo y hacerlo as es lo normal).

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

12

Introduccin a los Computadores

Pero para obtener la representacin en Ca2 hay que efectuar las divisiones de forma que los restos sean
positivos (y esto no es lo que hacemos normalmente al dividir un nmero negativo entre un positivo)
hasta que el cociente pueda ser cero y el resto de esta ultima divisin sea 0 o -1. La Figura 4.8
ejemplifica este algoritmo para dos casos, -5 y 5.
-5 2
-6 -3 2
1 -4 -2 2
1 -2 -1 2
0 0 0
-1
5
4
1

2
2
2
0

2
1
0
1

2
0
0
0

-5

=>

1011

=>

0101

2
0

Fig. 4.8 Ejemplo de divisiones sucesivas por 2 para obtener la representacin en


Ca2 del -5 y del 5.

Procedimiento de obtener X pasando por el clculo de Xu a partir de Xs. Dado un vector de n bits,
X, podemos encontrar el valor que representa interpretndolo como un nmero natural codificado en
binario aplicando la EQ (2) y tambin podemos encontrar el valor que representa X interpretndolo
como un nmero entero codificado en Ca2 aplicando la EQ (10).
Veamos la relacin que existe entre estas dos interpretaciones. La EQ (2) se puede expresar, quitando
del sumatorio el trmino de ms peso, como:
n2

Xu = xn 1 2

n1

x 2

i=0

Si en esta ecuacin sustituimos el valor del sumatorio que se obtiene de despejar la EQ (10),
n2

x 2
i

= X s + xn 1 2

n1

, obtenemos que:

i=0

Xu = Xs + xn 1 2

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

(EQ 12)

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

13

Dado un nmero entero Xs y un nmero de bits n tal que Xs pueda representarse en Ca2 con n bits (n tal
que 2

n1

Xs 2

n1

1 ) sabemos que si Xs es positivo entonces xn-1 es 0 y si Xs es negativo

entonces xn-1 es 1. Esto hace que la relacin de la EQ (12) pueda escribirse como:
Xs
Xu =
n
Xs + 2

si X s es positivo
si X s es negativo

(EQ 13)

Aplicando esta frmula, dado el nmero entero Xs encontramos fcilmente el valor natural Xu. Ahora
mediante el procedimiento de las divisiones sucesivas entre 2 que vimos en el captulo 1 para pasar de
decimal a binario encontramos el vector de n bits X que representa a Xu en binario, pero que tambin
representa a Xs en Ca2.
Ejemplo 2
Vamos a encontrar el vector de bits que representa en Ca2 al nmero entero Xs = -54. Para representar
71

71

al -54 hacen falta al menos 7 bits, ya que 2


54 2
1 . De la EQ (13) para n = 7 obtenemos
que, como -54 es negativo, Xu = -54 + 128 = 74. Ahora mediante sucesivas divisiones entre 2
obtenemos que el 74 se representa en binario mediante el vector de bits X = 1001010.
Si en el enunciado del problema nos dicen que quieren, por ejemplo, la representacin en Ca2 del -54
en 8 bits (u otro valor mayor que 7) aplicamos la EQ (13) para n=8 y obtenemos que Xu = 54+256=202 que en binario se representa mediante X = 11001010. Como vemos es la extensin de
rango en Ca2 del vector que obtuvimos para 7 bits, 1001010. Tambin se puede comprobar la
correccin del resultado repasando el ejemplo 1.
Ejemplo 3
Cada fila de la tabla siguiente tiene 3 columnas con: el vector de 8 bits X, el valor que representa X
interpretado como un nmero natural codificado en binario, Xu, y el valor que representa X
interpretado como un nmero entero codificado en complemento a dos, Xs. Usando la EQ (12) o la EQ
(13), para cada fila, a partir del valor de una columna de la tabla se pueden obtener los valores de las
otras dos columnas.

Xu

Xs

11001011

203

-53

00101110

46

46

11100110

230

-26

00011010

26

26

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

14

Introduccin a los Computadores

4.4 Suma en Ca2 con deteccin de resultado no representable


Como ya hemos visto, la suma de dos nmeros enteros representados en Ca2 se efecta con el
mismo sumador que usamos para naturales representados en binario. Este era el objetivo de la
representacin en Ca2. La diferencia entre la suma de nmeros naturales representados en binario
y la de nmeros enteros representados en Ca2 radica en la deteccin del resultado no
representable.
Si trabajamos con naturales en binario, el resultado de la suma no es representable con n bits cuando el
acarreo de salida del sumador, cn, vale 1. Esto ocurre por ejemplo para n = 3 al sumarle 1 (representado
por 001) al mayor nmero positivo que se puede representar con 3 bits, que es el 7 (111). En este caso,
el resultado del sumador es 000, que representa el 0 y c3 vale 1 que indica el resultado de la suma no es
representable con 3 bits. Sin embargo, en Ca2, el acarreo de salida del sumador, cn, no indica que el
resultado no sea representable. Para los mismos vectores de bits que en el ejemplo anterior, estamos
sumando 1 (representado por 001) al -1 (representado por 111) y el resultado del sumador es el
correcto, 000, que representa el 0, aunque el acarreo de salida c3 vale 1.
Cmo se sabe si los n bits del resultado del sumador binario cuando trabajamos en Ca2 representan
correctamente el resultado de la suma? La deteccin de resultado no representable al sumar dos
nmeros en Ca2 puede efectuarse observando los bits que indican el signo de los operandos, xn-1 e yn-1,
y del resultado, wn-1. Para encontrar la expresin lgica de resultado no representable, descomponemos
el problema en dos casos (y lo particularizamos para n=3, cuya representacin se muestra en la tabla de
la Figura 4.5). En el razonamiento que sigue hay que tener claro que en Ca2 con n bits podemos
representar todos los enteros entre el ms negativo de los representables (-2n-1 = -4) y el ms positivo
(2n-1-1 = 3), como hemos visto al hablar del rango.
Operandos con distinto signo.
La suma de un nmero positivo ms un nmero negativo ms el valor ms desfavorable del acarreo de
entrada nunca da un nmero ms alejado del 0 que el operando de valor absoluto mayor. Por ejemplo,
para n = 3, Xs + Ys + cin = 3 + (-1) + 1 = 3, y tambin Xs + Ys + cin = -4 + 0 + 0 = -4. De la afirmacin
anterior se deduce que, si los operandos Xs e Ys son representables con n bits, el resultado Xs + Ys + cin
tambin lo es. Por lo tanto, el resultado siempre es representable al sumar un positivo con un negativo.
Operandos con el mismo signo
Suma de positivos. La suma de cualquier par de nmeros positivos representables con n bits en Ca2,
del 0 al 2n-1-1 (del 0 al 3), ms el acarreo de entrada (el valor ms desfavorable para este caso es cin =
1) da nmeros entre el 0 y el 2n-1 (entre el 0 y el 7). Si sumamos los nmeros representados en Ca2 con
el sumador binario, obtendremos nmeros en Ca2:

entre el 0 y el 2n-1-1 (entre el 0 y el 3), que son los casos de resultados correctos, o
entre el -2n-1 y el -1 (entre el -4 y el -1), que son los casos de resultados incorrectos, ya que en estos
casos no se pueden representar los resultados correctos, que van del 2n-1 al 2n-1 (del 4 al 7).

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

15

Nunca, por muy grandes que sean los operandos positivos y con cin = 1 (por ejemplo, 3+3+1),
pasaremos la frontera del 111 al 000. O sea, que si al sumar dos nmeros positivos el resultado es
positivo este resultado es correcto, pero si el resultado es negativo, este resultado no es correcto,
porque el resultado correcto no es representable con n bits en Ca2.
Suma de negativos. Un razonamiento parecido puede hacerse al sumar dos negativos. Para n=3, al
sumar dos negativos (del -4 al -1) ms el acarreo ms desfavorable (para este caso cin = 0), el resultado
en Ca2 con 3 bits que nos entrega el sumador binario se encuentra:

entre el -4 y el -2 (casos de resultado correcto), o


entre el 0 y el 3 (resultados incorrectos, ya que los resultados correctos, que van del -8 al -5, no se
pueden representar con 3 bits).
O sea, que si al sumar dos nmeros negativos el resultado es negativo, este resultado es correcto; pero
si el resultado es positivo, este resultado no es correcto, porque el resultado correcto no es
representable con n bits en Ca2.
Conclusion
La regla completa de deteccin de resultado no representable para la suma en Ca2 con n bits es: si al
sumar dos nmeros enteros del mismo signo (sea cual sea el acarreo de entrada) el resultado que nos
dan los n bits del sumador binario tiene signo contrario, este resultado no es correcto ya que el
resultado correcto no es representable con n bits en Ca2. En cualquier otro caso el resultado es correcto.
Del texto anterior obtenemos la siguiente expresin lgica para la deteccin de resultado no
representable para la suma en Ca2 con n bits:
vn = xn 1 yn 1 wn 1 + xn 1 y n 1 wn 1

(EQ 14)

Por ello, si queremos saber si la salida W del sumador binario es correcta cuando interpretamos los
vectores de bits X, Y y W como nmeros enteros representados en Ca2, debemos aadirle al circuito
sumador el bit de salida vn. Denotamos a la funcin lgica que lo calcula, operador OVFn:
v n = OVF n ( X, Y, c0 )

(EQ 15)

Ni en el nombre de la variable lgica vn ni en el del operador OVFn pondremos el subndice n (tamao


del sumador binario) para el caso comn en este curso de n = 16.
OVF son las primeras letras de la palabra en ingls Overflow, que significa desbordamiento. En la literatura tcnica
anglosajona se usa el trmino Overflow (o en muchas ocasiones la letra v) para referirse al caso de resultado no
representable en Ca2, pero no suele usarse para el caso de representacin de naturales en binario. Aunque la
palabra desbordamiento da una idea clara de que el resultado no es correcto porque excede de la capacidad de
representacin del vector de n bits y esto es vlido tanto para binario como para Ca2, no usaremos la palabra
desbordamiento (overflow) para referirnos a esto en general, sino que usaremos el termino resultado no
representable. Usaremos el termino desbordamiento, overflow, OVF o la letra v, solamente para el caso de Ca2.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

16

Introduccin a los Computadores

Ejemplo 4
Sabras demostrar que es vlida la siguiente expresin lgica alternativa para la deteccin de resultado
no representable en Ca2?
vn = cn cn 1

(EQ 16)

Para demostrarlo, construimos la tabla de verdad del Full-adder de ms peso del sumador binario
construido con Full-adders conectados con propagacin del acarreo, ya que es el que genera las seales
cn y wn-1 a partir de xn-1, yn-1 y cn-1. El resultado puede verse en las cinco primeras columnas de la tabla
de la Figura 4.9. Por ltimo, puede observarse que la columna vn de la tabla de la Figura 4.9 se obtiene
tanto a partir de la expresin EQ (14) como de la expresin EQ (16), con lo que queda demostrado que
ambas expresiones del overflow son vlidas.
xn-1 yn-1 cn-1 cn wn-1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
1
1
1

0
1
1
0
1
0
0
1

vn
0
1
0
0
0
0
1
0

xn-1 yn-1

cn

Fa

cn-1

vn
wn-1

Fig. 4.9 Tabla de verdad del Full-adder de ms peso de un sumador binario.


Deteccin de resultado no representable (vn) cuando se opera en Ca2.

Ejemplo 5
Encuentra la expresin algebraica del valor Ws que obtiene el sumador binario cuando el resultado de la
suma de Xs + Ys + c0 no es representable con n bits en Ca2.
Vamos a proceder como hicimos en el caso de los nmeros naturales, observando casos concretos de
sumas con desbordamiento para el caso de n = 3 (ver tabla de la Figura 4.5). En la Tabla 4.1 se
muestran algunos casos. En los casos en que se debera obtener un valor positivo y se obtiene uno
negativo, se cumple que Ws = Xs + Ys - 8, mientras que en los casos en que se debera obtener un valor
negativo y se obtiene uno positivo, se cumple que Ws = Xs + Ys + 8.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

17

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

Tabla 4.1 Casos de desbordamiento en Ca2 con 3 bits


Xs

Ys

Xs + Ys

Ws

-2

-4

-4

-4

-8

-3

-2

-5

Generalizando para n bits, tenemos que el comportamiento del sumador binario para el caso de
resultado no representable en Ca2 es:
n

Xs + Ys + c0 2
Ws =
Xs + Ys + c0 + 2n

si

Xu + Y u + c 0 > 2

si

n1

n1

1
(EQ 17)

> Xu + Yu + c0

El sumador binario: para naturales y para enteros. De lo visto hasta ahora en este captulo
podemos decir que el bloque combinacional de la Figura 4.10 es un sumador tanto de nmeros
naturales representados en binario como de nmeros enteros representados en Ca2. En la figura se
muestra su implementacin interna para n = 3 bits. Para detectar cundo el resultado no es
representable con n bits, se proporciona el bit de salida cn para el caso de sumar nmeros en binario y el
bit vn para el caso de Ca2. A continuacin, se formaliza la funcionalidad del sumador:
Xu + Yu + c0
Wu =
Xu + Yu + c0 2n

0
vn =
1

si
si

Xu + Yu + c0 2 1
n

si

si
Xs + Ys + c0

Ws = Xs + Ys + c 0 2n

X s + Ys + c0 + 2n

0
cn =
1

si

2
si

Xu + Yu + c0 > 2 1
n1

Xs + Ys + c0 2
X s + Ys + c0 > 2

si

n1

n1

n1

> Xs + Ys + c0

(EQ 18)

si

Xu + Yu + c0 2 1

si

Xu + Yu + c0 > 2 1

n1

n1

Xs + Ys + c0 2

n1

> Xs + Ys + c0 > 2

n1

A los operadores que calculan el vector de bits W y los bits de condicin cn y vn, los denotamos como:
W = ADD n ( X, Y, c 0 )

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

(EQ 19)

18

Introduccin a los Computadores

Y
n

cn
vn

ADDn

c0

n
W

c3

x2 y2

x1 y1

x0 y0

Fa

Fa

Fa

c0

v3
w2

w1

w0

Fig. 4.10 Sumador de dos nmeros naturales o enteros representados


en binario o en Ca2 con 3 bits en Ca2 usando Full-adders con
propagacin del acarreo. Deteccin de resultado no representable con
3 bits para ambas representaciones.

c n = CARRY n ( X, Y, c 0 )

(EQ 20)

v n = OVF n ( X, Y, c0 )

(EQ 21)

Ejemplo 6
Disea un sumador de 2 nmeros enteros representados en Ca2 con n bits que obtenga el resultado de
la suma en Ca2 con n+1 bits. Por qu en este sumador no se produce nunca overflow?
Porque si los operandos estn representados con n bits, incluso si el acarreo de entrada vale 1, el
resultado de la suma siempre se puede representar con n+1 bits. Si 2
2

n1

y2

n1

n1

x2

n1

1 e

1 entonces 2 x + y + 1 2 1 .

Una forma directa de disear el circuito consiste en usar un sumador binario de 2 nmeros de n+1 bits
(por ejemplo conectando n+1 Full-adders con propagacin del acarreo) y alimentarlo con los dos

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

19

nmeros despus de extender el rango de cada uno de ellos a n+1 bits. Los n+1 bits de salida de este
sumador representan el resultado sin overflow.
Hacen falta realmente n+1 Full-adders, o con n Full-adders y una pequea lgica sera suficiente? Este
diseo puede optimizarse, ya que la salida del acarreo del Full-adder de ms peso, cn+1, no se est
usando para nada. Una implementacin con menos hardware consiste en usar un sumador de n bits e
implementar directamente w n = x n y n c n mediante la expresin:
wn = xn 1 yn 1 c n .

(EQ 22)

Si el sumador de n bits que estamos usando tiene salida de overflow, podemos usar la siguiente
expresin alternativa para wn:
wn = wn 1 v n

(EQ 23)

Dicho con palabras, wn es igual a wn-1 si no hay overflow y es igual a wn si hay overflow, usando el
sumador binario de n bits. Se puede obtener la expresin EQ (23) a partir de EQ (22) usando las
igualdades lgicas: x 0 = x y x x = 0 y conociendo la expresin del overflow de la EQ (16) y la
expresin del bit de suma del Full-adder de ms peso: w n 1 = x n 1 y n 1 c n 1 .

4.5 Cambio de signo en Ca2


Vamos a encontrar en esta seccin el algoritmo de la operacin aritmtica de cambio de signo
(negacin) de un nmero entero representado en Ca2 con n bits. Esto es, vamos a encontrar las
operaciones lgicas a seguir para obtener el vector W de n bits a partir de los n bits del vector X, tales
que:
Ws = Xs
Finalmente, construiremos un negador con puertas lgicas.
Observando la tabla de la Figura 4.11 vemos que, tanto en la columna del valor numrico representado
(columna Xs) como en su representacin (columna X = x2x1x0) existe algn tipo de simetra.

La columna Xs tiene una simetra respecto del -4. Los nmeros simtricos son el Xs y el -Xs. Por
ejemplo, el 2 se encuentra a 2 posiciones hacia arriba del -4 y el -2 a 2 posiciones hacia abajo. Esto
es, cambiar de signo un nmero representado en Ca2 con 3 bits, tanto positivo como negativo,
consiste en encontrar su simtrico en la tabla respecto de la fila 100, que representa el -4. Esto se
muestra en la figura con trazo muy grueso sombreado.

La columna X = x2x1x0 tiene una simetra respecto de la lnea que separa la representacin de los
nmeros positivos de los negativos. Las representaciones simtricas son la x2x1x0 y la x2x1x0. Esto
se muestra en la figura con trazo grueso discontinuo. Esto es, complementar1 (cambiar ceros por
unos y unos por ceros) la representacin de un nmero, tanto positivo como negativo, es

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

20

Introduccin a los Computadores

equivalente a encontrar la representacin simtrica respecto de la lnea que separa los positivos de
los negativos. Por ejemplo, complementando el 010 (que representa al 2) se obtiene el 101 (que
representa el -3).
De lo anterior se deduce que para obtener la representacin en Ca2 de -Xs a partir de la representacin
en Ca2 de Xs, tanto para valores de Xs positivos como negativos, solamente hay que complementar la
representacin de Xs y sumar 1 (001 para n=3) utilizando el sumador binario. Por supuesto que al
sumar 1 con el sumador binario nos quedamos con los 3 bits del resultado, sin tener en cuenta el
acarreo de salida. La suma de +1 se muestra en la figura mediante una flecha de trazo continuo. Por
ejemplo, si complementamos el 010 (que representa al 2), obtenemos el 101 y si al 101 le sumamos 001
nos da el 110, que representa el -2.
X
x2 x1 x0 X s

x2 x1 x0
+1

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
3
-4
-3
-2
-1

-Xs

Fig. 4.11 Simetra en la tabla de representacin para obtener -Xs complementando el


vector de bits que lo representa (cambiando ceros por unos y unos por ceros) y
sumando 1 (con el sumador binario).

Ejemplo 7
Si queremos obtener la representacin del -(-1) a partir de la representacin del -1 (que es 111)
hacemos:

el complemento de 111 que es el 000 y


le sumamos 1 con el sumador binario: 001 = ADD3(000,001,1)
Efectivamente, el vector 001 representa el 1.

1.

Ms correctamente se denomina complementar a 1.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

21

Ejemplo 8
Si efectuamos el complemento de la representacin del 0 y sumamos 1 obtenemos el 0, cosa que es
correcta, ya que -0 = +0:
ADD3(0 0 0, 0 0 1, 0) = ADD3(1 1 1, 0 0 1, 0) = 0 0 0.
4.5.1

Deteccin de resultado no representable en Ca2 con n bits

Nos indica el acarreo de salida del sumador binario que ha habido overflow en la operacin de cambio
de signo? No, el acarreo de salida cuando trabajamos en Ca2, tanto en el cambio de signo como en la
suma, no indica que el resultado no pueda representarse con n bits. El nico caso en el que se produce
acarreo de salida es en el cambio de signo del 0 y el resultado obtenido es correcto.
En qu casos se produce overflow? Al cambiar de signo al nmero ms negativo que se puede
n1

n1

n1

representar con n bits ( 2


) deberamos obtener el ( 2
) = 2
, que no se puede representar
con n bits en Ca2. ste es el nico caso de overflow en la operacin de cambio de signo en Ca2. Para el
caso de 3 bits, si complementamos el 100 obtenemos el 011 y si le sumamos 001 obtenemos el 100 que
vuelve a representar el -4.
Sabes encontrar ahora una expresin lgica para la deteccin de overflow? Se produce overflow en el
nico caso en que el operando tiene signo negativo y el resultado que se obtiene tiene tambin signo
negativo. Expresiones lgicas para la deteccin de overflow en la negacin son:
vn = xn 1 wn 1
4.5.2

(EQ 24)

Implementacin de un negador

Despus de tener claro el algoritmo de cambio de signo, su implementacin es sencilla. La Figura 4.12
muestra un negador en Ca2 para n=3 bits usando el sumador binario de la Figura 4.1. Para la deteccin
de overflow se ha usado la EQ (24).
Ejemplo 9
Una expresin alternativa a la EQ (24), para la deteccin de overflow en la negacin en Ca2 es:
vn = cn cn 1

(EQ 25)

Para demostrarlo, en las cuatro primeras columnas de la tabla de la Figura 4.13 construimos la tabla de
verdad de la rebanada de ms peso del negador de la Figura 4.12 ya que es este hardware (que se
muestra a la derecha en la Figura 4.13) el que genera las seales cn y wn-1 a partir de xn-1, y cn-1. Puede
observarse que la columna de vn se obtiene tanto a partir de la expresin EQ (24) como de la expresin
EQ (25), con lo que queda demostrado que ambas expresiones son vlidas.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

22

Introduccin a los Computadores

x2

x1

x0

Fa

Fa

Fa

vn
w2

w1

w0

Fig. 4.12 Negador de 3 bits en Ca2 usando Full-Adders.

x2
xn-1 cn-1 cn wn-1
0
0
1
1

0
1
0
1

0
1
0
0

1
0
0
1

vn

0
0
0
1

c3

Fa

c2

vn
w2
Fig. 4.13 Tabla de verdad del Full-adder de ms peso del negador de la Figura 4.12.
Deteccin de overflow.

Ejemplo 10
Hacen falta n FAs para implementar el negador? Para sumar el vector 001 al vector x2x1x0 no hace
falta un sumador construido con 3 Full-Adders. En el negador de la Figura 4.14 la suma del valor 1 se
ha efectuado con Half-adders en vez de usar Full-adders y adems se ha usado la EQ (25) para vn.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

23

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

x2

x1

x0

Ha

Ha

Ha

w2

w1

w0

vn

Fig. 4.14 Negador de 3 bits en Ca2 usando Half-adders.

Ejemplo 11
Veamos ahora cmo el cambio de signo nos puede ayudar a obtener la representacin en Ca2 de un
nmero negativo, por ejemplo el nmero -5.
Usaremos el siguiente algoritmo, ya que el nmero es negativo:
Primero obtendremos la representacin en Ca2 del valor absoluto del nmero en cuestin. Como el
valor absoluto es un nmero positivo, la representacin en Ca2 es como la representacin en binario,
pero asegurndonos que hay un 0 como bit de ms peso. Esto se hace mediante divisiones sucesivas
entre 2, empezando por el nmero y siguiendo por los cocientes hasta que el cociente es 0 y el resto es
tambin 0. Los sucesivos restos son los dgitos de la representacin, empezando por el dgito de menos
peso y terminando por el de ms peso que es 0. Despus aplicaremos el algoritmo de cambio de signo a
la representacin en Ca2. Estas divisiones se indican en la Figura 4.15 (parte de la izquierda). A la
izquierda de la figura se obtiene la representacin del -5 a partir de la representacin del 5 mediante el
algoritmo de cambio de signo (cambiar ceros por unos y unos por ceros y sumar 1). El resultado es:
1011 = ADD3(0 1 0 1, 0001, 0).
Ejemplo 12
Encontrar el nmero entero que se representa en Ca2 por el vector de bits X = 10110111.
Utilizando la frmula de la representacin, EQ (10), se obtiene:
X s = 128 + 32 + 16 + 4 + 2 + 1 = 73

(EQ 26)

Al observar que el nmero es negativo, pues la representacin tiene un 1 en el bit de ms peso, el


mismo resultado se puede obtener si:

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

24

Introduccin a los Computadores

=>

2
0
0
0

2
0

-5

=>

2
1
0
1

0101
complementar
1010
=>

2
2
2
0

=>

5
4
1

+ 0001

1011

Fig. 4.15 Obtencin de la representacin en Ca2 del -5.

se cambia de signo la representacin, sin que se produzca overflow (para ello se complementa y
suma 1 previa extensin de rango, si es necesario que no es el caso del ejemplo),
01001001 = ADD 8 ( 10110111, 00000001, 0 ) ,

(EQ 27)

se calcula el valor de esta representacin,


73 = 64 + 8 + 1 , y

(EQ 28)

se cambia de signo al valor resultante:


73 .

(EQ 29)

4.6 Resta en Ca2


Como podemos construir un restador aprovechando al mximo los bloques aritmticos que ya hemos
diseado? Calcularemos Ws = Xs - Ys usando la expresin equivalente Ws = Xs + (- Ys), ya que
sabemos sumar y sabemos cambiar de signo. Para ello, usamos el negador de la Figura 4.12 de la
siguiente forma:

En el Full-adder de menor peso, el bit a 1 que entra por una de las entradas superiores lo hacemos
entrar ahora por la entrada de c0 (esto no es ningn problema, pues las tres entradas de un Fulladder son intercambiables).

Por las entradas de la derecha de todos los Full-adders, en vez de entrar ceros ahora entraran los n
bits de X.

Por la entrada del negador entraremos los n bits del vector Y.


Esto es, W = ADDn(X, Y, 1). La Figura 4.16 muestra este diseo.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

25

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

x2 y2

x1 y1

x0 y0

Fa

Fa

Fa

vn
w2

w1

w0

Fig. 4.16 Restador de enteros de 3 bits en Ca2 usando Full-adders con propagacin
del acarreo.

4.7 Implementacin de un Sumador/restador


Como el sumador y el restador en Ca2 son parecidos, nos planteamos construir un sumador/restador
que sume o reste dos nmeros dependiendo de si su entrada de control, que denominamos s/r, vale 0 o
1. Partimos de los diseos del sumador y del restador con propagacin del acarreo de la Figura 4.16,
que vamos a fundir en uno solo. Para ello tenemos que ver en primer lugar que en la funcin Xor de 2
bits, w = a b , la entrada b se puede interpretar como una entrada que controla la funcionalidad de la
salida w en funcin de la entrada a de la siguiente manera:
a
w =
a

si

b = 0

si

b = 1

Sustituimos, ahora, las puertas NOT de la Figura 4.16 por puertas XOR y conectamos la entrada de
control s/r a la entrada de control y de las puertas XOR y al acarreo de entrada del Full-adder de menos
peso. Adems, para que este sumador/restador sirva tambin para la suma y resta de nmeros naturales
codificados en binario, se ha negado el acarreo de salida en caso de resta, para obtener el borrow, y
efectuar la deteccin de resultado no representable para la resta de naturales (como se estudio en el
captulo de Representacin y operaciones bsicas de nmeros naturales). El sumador/restador
resultante se muestra en la Figura 4.17.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

26

Introduccin a los Computadores

x2

y2

x1

y1

x0

y0

s/r

b3
c3

Fa

Fa

Fa

v3
w2

w1

w0

Fig. 4.17 Sumador/restador de 3 bits tanto para nmeros naturales en binario como para
enteros en Ca2 con deteccin de resultado no representable para las dos representaciones.

4.8

Multiplicacin por 2k en Ca2

Veamos primero el algoritmo de multiplicacin por 2 y luego el de multiplicacin por potencias de 2.


4.8.1

Algoritmo aritmtico de multiplicacin por 2 en Ca2.

A partir de la representacin en Ca2 con n bits, X = x n 1 x n 2 x 2 x 1 x 0 , de un nmero entero, Xs,


encontrar la representacin del nmero Ws = 2Xs. Dado que el rango de Xs es 2
n

n1

Xs 2

n1

1,

el de Ws es 2 X s 2 2 y por lo tanto se requieren, en el peor de los casos, n+1 bits para


representarlo. Encontrar el algoritmo aritmtico de la multiplicacin por 2 es equivalente a encontrar
los bits de W = w n w n 1 ... w 2 w 1 w 0 tales que Ws = 2Xs, o lo que es lo mismo:
n1

n2

n1
i
wn 2 +
wi 2 = 2 w n 1 2
+
wi 2

i=0
i=0
n

(EQ 30)

y que los valores wi sean dgitos vlidos en base 2, esto es:


0 wi 1

(EQ 31)

Como 2x2i = 2i+1, la EQ (30) expandida, para que se vea ms claro, y despus de multiplicar todos los
sumandos del sumatorio por 2, queda:

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

27

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

w n 2 + wn 1 2

n1

+ + w 2 2 + w 1 2 + w 0 2 = x n 1 2 + x n 2 2

n1

+ + x 1 2 + x 0 2

De aqu se ve que la siguiente solucin


w0 = 0 y
wi = xi 1

para

1in,

cumple con la ecuacin anterior, que es la EQ (30), y con la EQ (31), ya que los dgitos de X la
cumplen (son bits) y w0=0 tambin.
Por lo tanto, multiplicar por 2 un nmero entero representado en Ca2 consiste en desplazar los
bits de la representacin una posicin a la izquierda y poner un 0 como bit de menor peso.
Ejemplo 13
La figura 4.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la multiplicacin por 2 en
Ca2, el operando representado con 4 bits y el resultado con 5.
Valor

Representacin en Ca2
Bit 4

Xs= -7
2Xu= -14

Bit 3

Bit 2

Bit 1

Bit 0

Fig. 4.18 Ejemplo de aplicacin de multiplicacin por 2 en Ca2.

Deteccin de resultado no representable en n bits en Ca2. Como es habitual en un computador de n


bits, slo podemos almacenar los n bits de menor peso del resultado de la multiplicacin por 2, que
requiere, en el peor de los casos n+1 bits. Cmo sabemos si los n bits de menor peso representan
correctamente al resultado? La respuesta se obtiene del algoritmo de extensin de rango, pero aplicado
para reducir el rango: si el bit n y el n-1 del resultado son distintos, o lo que es lo mismo, si el bit n-1 y
el n-2 del operando son distintos, el resultado de la multiplicacin por 2 no es representable en Ca2 en
n bits.
4.8.2

Algoritmo aritmtico de multiplicacin por 2k en Ca2 y su implementacin hardware

Dado que multiplicar un nmero por 2k consiste en multiplicarlo por 2 repetidamente k veces, el
algoritmo aritmtico para multiplicar por 2k consiste en aplicar el algoritmo de multiplicacin por dos k
veces consecutivas. Esto es, desplazar k posiciones a la izquierda los bits que representan al nmero y
poner k ceros en los k bits de menor peso. Adems, el resultado no es representable en Ca2 con n bits
excepto si los k+1 bits de ms peso del operando son todos ceros o todos unos.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

28

Introduccin a los Computadores

Ejemplo 14
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero 23 y sus
multiplicaciones por 2k para k = 1, 3 y 5. Es de resaltar que 23x23 y 23x25 requieren 9 y 11 bits para
representarse correctamente en Ca2: 010111000 y 01011100000, por lo que los 8 bits de menor peso,
10111000 y 11100000, no dan el resultado correcto. El resultado no es representable en 8 bits en estos
dos casos porque los k bits de ms peso del operando (00010111), para k igual a 3 y a 5
respectivamente, no son k ceros ni k unos.
Valor:

Xs = 23

2Xs = 46

23Xs = 184

25Xs = 736

Representacin con n = 8 bits:

00010111

00101110

10111000

11100000

No representable

No representable

Ejemplo 15
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero -12 y sus
multiplicaciones por 2k para k = 1, 3 y 5 y la indicacin de cundo el resultado con 8 bits no es
representable.
Valor:

Xs = -12

2Xs = -24

23Xs = -96

Representacin con n = 8 bits:

11110100

11101000

10100000

25Xs = -384
10000000
No representable

Implementacin del multiplicador por 2k en Ca2 (SL-k)


La figura 4.19 muestra el esquema lgico del circuito combinacional para multiplicar un nmero entero
representado en Ca2 con 16 bits por 2k, para k=4. El algoritmo para los n bits del resultado es el mismo
que el de multiplicacin por 2k para naturales en binario. La diferencia est en la deteccin del
resultado no representable. El resultado es representable en binario cuando el operando tiene los k bits
de ms peso iguales a cero mientras que en Ca2 lo es cuando los k+1 bits de ms peso son todos cero o
todos 1. No obstante, como en nuestro computador no vamos a detectar por hardware cundo el
resultado de las operaciones aritmticas es o no representable, ni en binario ni en Ca2, usamos el
mismo dispositivo que para naturales, el SL-k (Shift Left - k), desplazador de k bits a la izquierda., cuyo
smbolo se muestra en la figura para k=4.

4.9

Divisin por 2k en Ca2

Vemos primero el algoritmo de divisin por 2 y luego el de divisin por potencias de 2.


4.9.1

Algoritmo aritmtico de divisin por 2 en Ca2.

A partir de la representacin en Ca2 con n bits, X = x n 1 x n 2 x 2 x 1 x 0 , de un nmero entero, Xs,


debemos encontrar la representacin en Ca2 con n bits del nmero Ws = Xs/2. De hecho Ws se puede

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

29

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

x15 x14 x13 x12 x11 x10 x9

x8

x7

x6

x5

x4

x3

x2

x1

x0

X
SL-4
W

w15 w14 w13 w12 w11 w10 w9 w8 w7 w6 w5 w4 w3 w2 w1 w0


Fig. 4.19 Smbolo del desplazador de 4 bits a la izquierda (Shift Left - 4) y esquema
interno para n=16 (sin deteccin de resultado no representable ni para naturales en
binario ni para enteros en complemento a dos.

representar correctamente en Ca2 con n-1 bits, por lo que el resultado con n bits que vamos a obtener
siempre ser correcto, no tiene sentido hablar de deteccin de resultado no representable. As que,
encontrar el algoritmo aritmtico de la divisin por 2 en Ca2 es equivalente a encontrar los bits de
W = w n 1 w n 2 ... w 2 w 1 w 0 tales que:
n2

w n 1 2

n1

n2

n1
i
+
wi 2 = wn 1 2
+
wi 2 2

i=0
i=0

(EQ 32)

y que los valores wi sean dgitos vlidos en base 2, esto es: 0 w i 1

(EQ 33)

Como 2i/2 = 2i-1, la EQ (32) expandida y despus de dividir todos los sumandos del sumatorio por 2, y
recordando que x0/2 = 0 (divisin entera), queda:
wn 1 2

n1

+ wn 2 2

n2

+ + w 2 2 + w 1 2 + w 0 2 = x n 1 2

n2

+ xn 2 2

n3

+ + x 2 2 + x 1 2

Como 2k = 2k+1-2k, podemos sustituir el sumando de ms peso de la parte de la derecha de la igualdad


anterior por,
xn 1 2

n2

= xn 1 2

n1

+ xn 1 2

n2

Despus de esta sustitucin se ve que la siguiente solucin,


wi = xi + 1

para

0in2 y

wn 1 = xn 1
cumple con la EQ (32) y tanbin con la EQ (33) ya que los dgitos de X la cumplen (son bits).

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

30

Introduccin a los Computadores

Por lo tanto, dividir por 2 un nmero entero representado en Ca2 consiste en desplazar los bits de
la representacin una posicin a la derecha replicando el bit de signo (el bit de menor peso del
operando desaparece).
Ejemplo 16
La figura 4.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la divisin por 2 en Ca2.
Valor

Representacin en Ca2
Bit 3

Bit 2

Bit 1

Bit 0

Xs = 7

Xs / 2 = 3

Fig. 4.20 Ejemplo de aplicacin de divisin por 2 en Ca2.

Ejemplo 17
La figura 4.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la divisin por 2 en Ca2.
Valor

Representacin en Ca2
Bit 3

Bit 2

Bit 1

Bit 0

Xs = -7

Xs / 2 = -4

Fig. 4.21 Ejemplo de aplicacin de divisin por 2 en Ca2.

Es muy importante darse cuenta de qu tipo de divisin entera estamos realizando. En las deducciones
anteriores hemos dicho que x0/2 =0. x0 es el resto positivo de dividir Xs entre 2. Cuando Xs es un
nmero positivo (como en el ejemplo 16) el resultado que obtenemos es el de la parte entera por abajo
del resultado, o lo que se denomina el primer entero ms prximo hacia el 0. Pero cuando Xs es
negativo (como en el ejemplo 17) es el entero ms prximo hacia . En cualquier caso es el entero
ms prximo hacia . Dicho de otra forma, el algoritmo de divisin por 2 que hemos encontrado
calcula el cociente entero tal que el resto sea siempre positivo, sea cual sea el signo del operando. Si al
dividir -7 entre 2 obtenemos el cociente -3 es porque el resto es -1, ya que de la prueba de la divisin:
-7 = -3x2-1. Sin embargo, si tal como hacemos aqu, al dividir -7 entre 2 nos da el cociente -4 es porque
el resto es 1, ya que: -7 = -4x2+1.
4.9.2

Algoritmo aritmtico de divisin por 2k en Ca2 y su implementacin hardware

Dado que dividir un nmero por 2k consiste en dividirlo por 2 repetidamente k veces, el algoritmo
aritmtico consiste en aplicar el algoritmo de divisin por dos k veces consecutivas. Esto es, desplazar

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

31

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

k posiciones a la derecha los bits que representan al nmero y poner el bit de signo del operando en las
k posiciones de ms peso del resultado. Adems, el resultado siempre es representable en los mismos
bits que el operando.
Ejemplo 18
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero 23 y sus divisiones por
2k para k = 1, 3 y 5. Al ser un nmero entero positivo en Ca2 el algoritmo y la representacin del
operando y del resultado son los mismos que en binario.
Valor:

Xs = 23

Xs /2 = 11

Xs /23 = 2

Xs /25 = 0

Representacin con n = 8 bits:

00010111

00001011

00000010

00000000

Ejemplo 19
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero -13 y sus divisiones por
2k para k = 1, 3 y 5 (la divisin es al entero ms prximo hacia ).
Valor:

Xs = -13

Xs /2 = -7

Xs /23 = -2

Xs /25 = -1

Representacin con n = 8 bits:

11110011

11111001

11111110

11111111

Implementacin del divisor por 2k en Ca2 (SRA-k)


La figura 4.19 muestra el circuito combinacional para dividir un nmero entero representado en Ca2
con 16 bits por 2k, para k=4. La salida se forma desplazando a la derecha k bits la entrada y
extendiendo el bit de signo a los k bits de ms peso. El resultado siempre es representable. El smbolo
de este bloque se muestra a la izquierda de la figura y se denomina, SRA-k (Shift Right Aritmeticaly k): desplazador aritmtico de k bits a la derecha (para diferenciarlo del desplazador lgico a la derecha,
SRL, que usamos para dividir por potencias de 2 nmeros naturales representados en binario).

x15 x14 x13 x12 x11 x10 x9

x8

x7

x6

x5

x4

x3

x2

x1

x0

X
SRA-4

w15 w14 w13 w12 w11 w10 w9 w8 w7 w6 w5 w4 w3 w2 w1 w0


Fig. 4.22 Smbolo del desplazador aritmtico de 4 bits a la derecha (Shift Right
Aritmeticaly - 4) y esquema interno para n=16.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

32

Introduccin a los Computadores

4.10 Comparacin de nmeros enteros en Ca2


Al igual que hicimos con los nmeros naturales representados en binario, para comparar los dos
nmeros enteros Xs e Ys representados en Ca2 con m bits por X e Y, realizamos la resta de los dos
nmeros y analizamos el resultado1. Como la ecuacin Xs < Ys es equivalente a la ecuacin Xs - Ys < 0,
decimos que Xs ser menor que Ys cuando Xs-Ys sea negativo.
Hay que recordar que el restador obtiene el vector de m bits W, que lo forman los m bits de menor peso
del resultado correcto de la resta. El restador tambin obtiene el bit de overflow, v, que se activa cuando
W no representa el resultado correcto W s X s Y s .
Cuando v vale 0 el resultado en W es correcto, luego Ws = Xs -Ys. En este caso, si Ws es negativo, o lo
que es lo mismo si el bit de signo de W, wm-1, es 1 entonces Xs es menor que Ys.
Cuando v vale 1 es porque Xs-Ys es un nmero negativo y W representa a un positivo o porque Xs-Ys es
un nmero positivo y W representa a un negativo. As que, cuando el resultado de la resta no es
representable en m bits, o lo que es lo mismo cuando v vale 1, para saber el signo del resultado correcto
hay que emplear este algoritmo: si el bit de signo de W, wm-1, es 1 el resultado correcto es positivo y si
es el bit de signo es 0 el resultado correcto es negativo.
De los dos ltimos prrafos se deduce que, denominando n al bit de signo de W, wm-1, Xs es menor que
Ys cuando vale 1 la expresin lgica siguiente:
!vn + v!n
Esta es la expresin de la operacin Xor de v y n:
v^n

(donde ^ denota a la funcin lgica Xor).

La figura 4.23a muestra el bloque LT que tiene dos buses de m bits, X e Y, y cuya salida de un bit w vale
1 cuando Xs es menor que Ys junto con el circuito interno del bloque. Hay que reslatar que el resultado
de la comparacin es siempre correcto, aunque no lo sea el resultado de la resta.
En la figura 4.23b se muestra el bloque LE con sus dos buses de entrada de m bits y su salida de un bit
w. En este caso, w vale 1 cuando Xs es menor o igual que Ys. Si denominamos z a la variable lgica que
vale 1 cuando Ws es 0, la expresin lgica que vale 1 cuando Xs es menor o igual que Ys es:
(v ^ n ) + z
El circuito interno del bloque se forma aadiendo al circuito LT un bloque Zero, para obtener z y
poderle hacer la operacin Or con (v ^ n). La figura 4.23b muestra el esquema lgico interno del bloque
LE.
1.

Hemos denotado con m al nmero de bits de los vectores X e Y ya que en este apartado reservamos la letra n para la variable
lgica negativo que aparecer ms tarde y que se usa asiduamente para representar el bit de signo (bit de ms peso) o bit de
negativo, del resultado de una resta.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

33

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales

a) LT

b) LE
X

b+ v SUB

LE

b15

LT

X Y

b15

b+ v SUB

X Y

z
n

Fig. 4.23 Smbolo y esquema interno de los comparadores de nmeros enteros en Ca2:
a) LT y b LE.

Tanto para el bloque LT como para el LE hemos usado un restador con salida de borrow, b, y de
overflow, v. En estos diseos la salida de borrow no se usa ya que no estamos considerando nmeros
naturales sino enteros, por lo que usamos la salida de overflow, v.

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

34

Introduccin a los Computadores

Copyright 2009, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

You might also like