Está en la página 1de 12

UNIVERSIDAD DE COSTA RICA

ESCUELA DE CIENCIAS DE LA Roxana Vargas Solano


COMPUTACION E INFORMATICA

Representacin de nmeros con signo

En matemticas, los nmeros negativos en cualquier base se representan del modo


habitual, precedindolos con un signo "". Sin embargo, en una computadora, hay varias
formas de representar el signo de un nmero. A continuacin se muestran tres mtodos de
extender el sistema binario para representar nmeros con signo: signo y magnitud,
complemento a uno, y complemento a dos.

Para la mayora de usos, las computadoras modernas utilizan tpicamente la


representacin en complemento a dos, aunque pueden usarse otras en algunas
circunstancias.

Signo y Magnitud:

Un primer enfoque al problema de representar el signo de un nmero podra consistir en


asignar un bit para representar el signo, poner ese bit (a menudo el bit ms significativo) en 0
para un nmero positivo, y en 1 para un nmero negativo. Los bits restantes en el nmero
indican la magnitud (o el valor absoluto).

0 0 1 1 0 1 0 0
Bit de Signo Magnitud = 5210

Por lo tanto en un byte con solamente 7 bits (aparte del bit de signo) la magnitud puede
tomar valores desde 01111111(+127) a 0000000 (0), y de aqu a 11111111 (-127). As se
puede representar nmeros desde -12710 hasta +12710. Una consecuencia de esta
representacin es que hay dos maneras de representar 0, 00000000 (0) y 10000000 (-0). De
este modo -43 decimal codificado en un byte de ocho bits es 10101011.

Este enfoque es directamente comparable a la forma habitual de demostrar el signo


(colocando "+" o "-" al lado de la magnitud del nmero). Algunas de las primeras
computadoras binarias (por ejemplo la IBM 7090) utilizaron esta representacin, quizs por
su relacin obvia con la prctica habitual (Muchas computadoras decimales tambin usaron
el sistema "signo y magnitud).

Aunque el sistema Signo y Magnitud es bastante sencillo, por lo general las


computadoras y calculadoras no lo utilizan, porque la implementacin del circuito es mucho
ms compleja que la de otros sistemas. El sistema ms empleado es el sistema de
complemento a 2.

Complemento a uno:

Como alternativa para representar nmeros negativos puede usarse un sistema


conocido como complemento a uno. La forma del complemento a uno de un nmero binario
es un NOT bit a bit aplicado al nmero Recordemos que el complemento a uno de un
1
nmero positivo no sufre ningn cambio (C1(2)= 00000010 C1(-2)= 11111101). Como en la
representacin de signo-y-magnitud, el complemento a uno tendr dos representaciones del
0: 00000000 (+0) y 11111111 (0). Como ejemplo, el complemento a uno de 0101011 (43)
se convierten en 1010100 (43).

El rango para la representacin en complemento a uno con 8 bits es 127 a +127 (en
base 10). Para sumar dos nmeros representados en este sistema, uno hace una suma
binaria convencional, pero es necesario sumar el ltimo acarreo obtenido al resultado de la
suma. Para ver porqu esto es necesario, consideramos el caso de la suma de 1
(11111110) a +2 (00000010). La adicin binaria solamente da a 00000000, que no es la
respuesta correcta! Solamente cuando se suma el acarreo al resultado obtenemos el
resultado correcto (00000001).

Este sistema numrico de representacin era comn en computadoras ms antiguas; el


PDP-1 y la serie de UNIVAC 1100/2200, entre muchas otras, utilizaron la aritmtica en
complemento a uno. (Una observacin de terminologa: El sistema es conocido como
complemento a uno porque la negacin de x se forma restando x a una cadena larga de
unos. La aritmtica del complemento a dos, por otra parte, forma la negacin de x restando la
potencia de dos que utiliza un bit ms en la representacin (Siguiendo con el ejemplo de 8
bits el nmero a restar sera 100000000).

Ejemplo:
Usando una palabra para representar el nmero 31:

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

Para 31:
1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

Complemento a dos:

Los problemas de las mltiples Valores con Valor del Valor sin
representaciones del 0 y la necesidad del acarreo nmeros de complemento signo
de salida, se evitan con un sistema llamado 8 bits a dos
Complemento a dos. En el complemento a dos, 00000000 0 0
los nmeros negativos se representan mediante 00000001 1 1
el patrn de bits que es un bit mayor (sin signo) ... ... ...
que el complemento a uno del valor positivo. En 01111110 126 126
el complemento a dos, hay un solo cero 01111111 127 127
(00000000). Para negar un nmero (negativo o 10000000 128 128
positivo) invertimos todos los bits y aadimos un 1 10000001 127 129
al resultado. 10000010 126 130
... ... ...
La suma de un par de nmeros enteros en 11111110 2 254
complemento a dos es la misma que la suma de 11111111 1 255
un par de nmeros sin signo (excepto para la
2
deteccin de desbordamiento si se usa).

Por ejemplo, la suma en complemento a dos de 127 y 128 da el mismo patrn de bits
que la suma sin signo del 127 y 128, tal y como se puede ver en la tabla de abajo.

Una forma fcil de implementar el complemento a dos es la siguiente:

Ejemplo 1 Ejemplo 2
1. Empezando desde la derecha encontramos el primer '1' 0101001 0101100
2. Hacemos un NOT a todos los bits que quedan por la izquierda 1010111 1010100

Resumiendo:
Cuando se va a almacenar un nmero positivo, se almacena el 0 en la posicin que
corresponde al signo, se convierte el valor correspondiente a binario y se almacena en las
posiciones restantes. Justificando a la derecha en los casos necesarios.

Cuando se va a almacenar un nmero negativo, se almacena el 1 en la posicin que


corresponde al signo y se convierte el valor correspondiente a binario, se complementa a 2 y
se almacena en las posiciones restantes. Justificando a la derecha en los casos necesarios.

Ejemplo:
Usando una palabra para representar el nmero 31:

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

Para 31:
1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1

Conversin de forma complemento a dos a binario:


Para pasar de complemento a 2 a binario se realiza el mismo proceso que se utiliz
para complementar a 2.

Intervalo de valores:

Se puede decir que el intervalo completo de valores que se pueden representar en el


sistema complemento a 2, que tiene N bits de magnitud es:

[-2N, 2N-1]

N bits de magnitud 2N diferentes nmeros.

2 posibles signos en el bit N+1 2 2N = 2N+1 diferentes nmeros incluido el cero.

3
Para N = 3 [-8, 7] 16 diferentes nmeros.

Decimal Complemento
A2
-8 1000
-7 1001
.
.
.
6 0110
7 0111

Ejemplos:

1. Cul es el intervalo de valores en base 10 sin signo que se puede representar en 8 bits?
256 diferentes valores [0, 255].

Decimal Complemento
A2
0 00000000
1 00000001
.
.
.
255 11111111

2. Cul es el intervalo de valores en base 10 con signo que se puede representar en 8


bits?
[-27, 27-1] [-128, 127] Un total de 28 = 256 valores.

3. Cul es el menor nmero negativo en base 10 que se puede representar con 16 bits?

16 bits con signo magnitud 216-1 = 215 = -32768.

4. Cuntos bits se requieren para representar los nmeros enteros decimales que se
encuentran entre -50 y 50 inclusive? Se requieren 7 bits.

Tabla de comparacin:

La tabla siguiente compara la representacin de los enteros entre 8 y -8 (incluidos)


usando 4 bits.
4
Representacin de enteros en 4 bits

Entero Signo Complemento Complemento


Decimal
positivo magnitud a1 a2
+8 1000 n/a n/a n/a
+7 0111 0111 0111 0111
+6 0110 0110 0110 0110
+5 0101 0101 0101 0101
+4 0100 0100 0100 0100
+3 0011 0011 0011 0011
+2 0010 0010 0010 0010
+1 0001 0001 0001 0001
(+)0 0000 0000 0000 0000
()0 n/a 1000 1111 n/a
1 n/a 1001 1110 1111
2 n/a 1010 1101 1110
3 n/a 1011 1100 1101
4 n/a 1100 1011 1100
5 n/a 1101 1010 1011
6 n/a 1110 1001 1010
7 n/a 1111 1000 1001
8 n/a n/a n/a 1000

Desborde aritmtico (overflow):

Supongamos que necesitamos realizar la siguiente suma en 5 bits, vamos a trabajar en


complemento a 2, el bit de signo aparece sombreado:

9 010012
+9 +010012
100102

Como puede observar, el bit de signo contiene un signo negativo en el resultado. Lo


cual es incorrecto. La respuesta correcta debera de ser +18 0100102, pero como puede
observar la magnitud necesita ms de 4 bits y por lo tanto sobrepasa la posicin del bit de
signo. Esta condicin de desborde siempre produce un resultado incorrecto y se detecta al
examinar el bit de signo del resultado y al compararlo con los bits de signo de los nmeros
que se estn sumando. En una computadora se utiliza un circuito especial para detectar
cualquier condicin de desborde y para sealar que la respuesta es errnea.

5
Multiplicacin binaria en el Sistema Complemento a 2:
En las computadoras que emplean la representacin en complemento a 2, la
multiplicacin se efecta en la misma forma, siempre y cuando el multiplicando y el
multiplicador se conviertan en magnitudes positivas.

Caso 1: Si los dos nmeros que se van a multiplicar son positivos, se convierten a binario y
ya se encuentran en complemento a 2 con magnitudes positivas, por lo tanto basta
multiplicarlos. Sabemos que el producto es positivo y se le da un bit de signo 0 (cero).

Caso 2: Cuando los dos nmeros son negativos, se realiza la conversin a binario y se debe
complementar a 2 para convertirlos en magnitudes positivas y luego se realiza la respectiva
multiplicacin. El producto se mantiene positivo y se le asigna un bit de signo 0 (cero).

Caso 3: Cuando uno de los nmeros es positivo y el otro negativo, al negativo se le convierte
primero en una magnitud positiva, tomando su complemento a 2. El producto estar en forma
de magnitud positiva, sin embargo, el producto tiene que ser negativo, por lo cual se debe
calcular el complemento a 2 de este resultado y se le debe asignar un bit de signo 1 (uno).

Divisin binaria en Sistema Complemento a 2:


La divisin de nmeros con signo se lleva a cabo de la misma manera que la
multiplicacin. Los nmeros negativos se vuelven positivos mediante el complemento a 2 y
luego se realiza la divisin.

Caso 1: Si el dividendo y el divisor son de signo opuesto, el cociente resultante se cambia


por una magnitud negativa utilizando el complemento a 2 y se le da un bit de signo 1 (uno).

Caso 2: Si el dividendo y el divisor tienen el mismo signo, el cociente se deja como una
magnitud positiva y se le asigna un signo 0 (cero).

Punto Flotante

Muchas aplicaciones requieren trabajar con nmeros que no son enteros. Existen
varias formas de representar nmeros no enteros. Una de ellas es usando un punto o coma
fijo. Este tipo de representacin ubica siempre el punto o coma en alguna posicin distinta
de la derecha del dgito menos significativo.

Otra alternativa comnmente usada es la que se conoce como representacin en


punto flotante. Bajo este esquema, un nmero puede ser expresado mediante un exponente
y una mantisa. Por ejemplo el nmero 10.75 puede ser expresado como

10.75 x 10 0
1.075 x 10 1
mantisa exponente
6
En general, un nmero en punto flotante puede ser representado como d0.d1d2d3...dk x
e
b donde d0.d1d2d3...dk se conoce como la mantisa, b es la base y e el exponente

Qu se necesita para representar un nmero en punto flotante?


El signo del nmero.
El signo del exponente.
Dgitos para el exponente.
Dgitos para la mantisa.

Dado que un nmero en punto flotante puede expresarse de distintas formas que son
equivalentes, es necesario establecer una nica representacin. Es por ello que se trabaja
con nmeros normalizados. Decimos que un nmero est normalizado si el dgito a la
izquierda del punto o coma est entre 0 y la base (0< dgito a la izquierda del punto < b). En
particular, decimos que un nmero binario est normalizado si el dgito a la izquierda del
punto es igual a 1.

1.00 x 10 -1 normalizado

0.01 x 10 2 no normalizado

Estndar IEEE-754 para Punto Flotante

El IEEE (Institute of Electrical and Electronics Engineers) ha creado un estndar para la


representacin de nmeros en punto flotante. Este estndar especifica cmo deben
representarse los nmeros en punto flotante con simple precisin (32 bits) o doble precisin
(64 bits), y tambin cmo deben realizarse las operaciones aritmticas con ellos.

Este estndar se desarroll para facilitar la portabilidad de los programas de un


procesador a otro y para alentar el desarrollo de programas numricos sofisticados. Este
estndar ha sido ampliamente adoptado y se utiliza prcticamente en todos los procesadores
y coprocesadores aritmticos actuales. El estndar del IEEE define el formato para precisin
simple de 32 bits y para precisin doble de 64 bits.

Precisin Simple

El formato para los nmeros de precisin simple es de 32 bits.

S Exponente Mantisa

31 22 0
signo exponente con signo Mantisa
1 8 23

7
La representacin de un nmero en precisin simple en el formato IEEE-754 consta de
las siguientes partes:

Signo se encuentra en el bit ms significativo, de esta manera podemos usar la


misma circuitera (de enteros) para llevar a cabo comparaciones con respecto al
cero.
Exponente con signo. Est conformado por los siguientes 8 bits. Esta ubicacin del
exponente en la palabra facilita las comparaciones de nmeros. Si los nmeros se
encuentran normalizados, comparamos los exponentes. Si son iguales pasamos a
comparar las mantisas. Pero qu representacin es ms conveniente usar para el
exponente? Si utilizamos Complemento a Dos, los exponentes negativos
aparecern como mayores que los exponentes positivos al usar la circuitera de
enteros.

C2(-1) = 1111 1111


C2(0) = 0000 0000
C2(1) = 0000 0001

Para evitar este inconveniente, se utiliza una representacin en exceso N de forma


que el exponente ms negativo posible quede en 0000 0001 y el ms grande de los
positivos en 1111 1110. El estndar IEEE 754 usa como exceso 127 para precisin
simple.

Exponente ms negativo representable:


x + 127 = 0000 0001
x = -126

Exponente ms grande representable


x + 127 = 1111 1110
x = 127

Mantisa. Est formada por el resto de los bits en la palabra (23). Como los
nmeros se representan de manera normalizada entonces siempre tendremos un 1
a la izquierda del punto. Por lo tanto este dgito no es necesario almacenarlo en la
palabra y se tiene de manera implcita. La mantisa consiste en 24 bits de precisin,
los 23 que se almacenan ms el 1 que no se almacena.

Ejercicio

Representar segn el estndar IEEE de punto flotante los siguientes valores:


7
Convertimos el nmero a binario.
710 = 1112
Normalizamos el nmero.
1.112 x 1022
Calculamos el exponente con exceso127 para precisin simple.
8
2 + 127 = 12910 = 1000 00012
El nmero 710 en el estndar IEEE es representado como:
0 10000001 11000000000000000000000
Signo exponente en exceso mantisa

21
2110 = 101012 = 1.01012 x 1024
Exponente 4 + 127 = 13110 = 1000 00112

0 10000011 01010000000000000000000

Precisin Doble

La representacin de un nmero en precisin doble en el formato IEEE-754 consta de


las siguientes partes:

Signo se encuentra en el bit ms significativo


Exponente en exceso. Est conformado por los siguientes 11 bits. Se utiliza una
representacin en exceso 1023 de forma que el exponente ms negativo posible
quede en 000 0000 0001 y el ms grande de los positivos en 111 1111 1110.
Mantisa. Est formada 52 bits ms el bit implcito (53).

signo exponente en exceso Mantisa


1 bit 11 bits 52 bits

Casos Especiales

Para valores de exponente desde 1 hasta 254 en el formato simple y desde 1 a hasta
2046 en el formato doble, se representan nmeros en punto fijo normalizados. El exponente
est en exceso, siendo el rango del exponente de 126 +127 en el formato simple y de
1022 a +1023 en el doble.

Un nmero normalizado debe contener un bit 1 a la izquierda del punto binario; este bit
est implcito, dando una mantisa efectiva de 24 bits para precisin simple o 53 bits para
precisin doble (denominada parte fraccionaria en el estndar).

Un exponente cero junto con una parte fraccionaria cero representa el cero positivo o
negativo, dependiendo del bit de signo. Es til tener una representacin del valor 0 exacto.

9
Precisin Simple

Exponente en exceso Mantisa Valor


0 0 Cero
Nmero no normalizado
0 <> 0
(0. + Mantisa x 2-126
1 .. 254 (1. + Mantisa) x 2 exp-127
255 0 Infinito
255 <> 0 Not a Number

Precisin Doble

Exponente en exceso Mantisa Valor


0 0 Cero
Nmero no normalizado
0 <> 0
(0. + Mantisa x 2-1022
1 .. 2046 (1. + Mantisa) x 2 exp-1023
2047 0 Infinito
2047 <> 0 Not a Number

Conversin de un nmero en Punto Flotante decimal a Binario

Algoritmo de conversin de punto flotante decimal a cualquier base:

Dado un nmero Num10 en punto flotante decimal y una base b


d0= parte entera(Num10)
Num10 = (Num10 - d0) * b
i=1
Repetir desde i = 1 hasta N
di = parte entera (Num10)
Num10 = (Num10 - di) * b

Num10 = d0.d1d2d3d4...dN b

Ejemplos

a.) Convertir 0.510 a binario y hallar su representacin en IEEE precisin simple

0.50
(0.50-0) * 2 = 1 d0=0
(1.00-1) * 2 = 0 d1=1

10
0.5010 = 0.12 = 1.0 x 2-1

Exponente en exceso = -1 + 127 = 12610 = 0111 11102

0 01111110 00000000000000000000000

0 01111110 00000000000000000000000
exponente en
Signo mantisa
exceso

b.) Convertir 3.7510 a binario y hallar su representacin en IEEE precisin simple


3.75
(3.75-3) * 2 = 1.50 d0=3
(1.50-1) * 2 = 1.00 d1=1
(1.00-1) * 2 = 0.00 d2=1

3.7510 = 11.112 = 1.111 x 21

Exponente en exceso = 1 + 127 = 12810 = 1000 00002

0 1000 0000 11100000000000000000000


signo exponente en exceso mantisa

c.) Convertir 0.310 a binario y hallar su representacin en IEEE precisin simple


0.3
(0.3-0) * 2 = 0.6 d0=0
(0.6-0) * 2 = 1.2 d1=0
(1.2-1) * 2 = 0.4 d2=1
(0.4-0) * 2 = 0.8 d3=0
(0.8-0) * 2 = 1.6 d4=0
(1.6-1) * 2 = 1.2 d5=1

0.310 = 0.01001001001...2 = 1.001001001... x 2-2

Exponente en exceso = -2 + 127 = 12510 = 0111 1101 2

0 0111 1101 00100100100100100100100


signo exponente en exceso mantisa

Esta representacin es una aproximacin. No puede ser escrito en forma precisa. Los
nmeros punto flotante son normalmente aproximaciones. La razn de esto es que existe un
nmero infinito de nmeros reales entre dos nmeros dados.

d.) Qu nmero decimal representa el siguiente patrn de bits en IEEE precisin simple?

0 00001100 01000000000000000000000
11
- Calculamos el exponente que va a formar parte del nmero decimal, restando el valor del
exponente menos el exceso de 127.

Exponente en exceso = 1210 = exponente + 12710


Exponente = 12 - 127 = -11510

- Los dgitos que estn en la mantisa van a formar parte de el nmero decimal, y por tanto el
nmero representado es

1.012 x 2-115 = (1. + 0.25) x 2-115 = 1.2510 x 2-115

e.) Qu nmero decimal representa el siguiente patrn de bits en IEEE precisin simple?

0 10000011 10100000000000000000000
Exponente en exceso = 131
Exponente = 131 - 127 = 4
1.101 x 24 = 11010 = 2610

Ejercicios Propuestos

Convertir los siguientes nmeros a punto flotante binario:


-1.75610
15.7510
5.62510
1.0 x 10-110
5.7525*1010

Cambio de base b1 a base b2 directamente:

a. 2213 ?5
510 = 123
2213 123
12 123 123
101 12 1
101 0
0

2213 = 1005

Ejercicios:
b. 10223 ?2 Respuesta: 10223 = 1000112
c. 102123 ?8 Respuesta: 102123 = 1508
d. 1002123 ?8 Respuesta: 1002123 = 4128
e. 418 ?3 Respuesta: 418 = 10203
f. 3024 ?8 Respuesta: 3024 = 628

12

También podría gustarte