Sie sind auf Seite 1von 9

Representacin de nmeros con signo

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. Este artculo
trata cuatro mtodos de extender el sistema binario para representar nmeros con signo: signo y magnitud,
complemento a uno, complemento a dos y exceso a bn-1.
Para la mayora de usos, las computadoras modernas utilizan tpicamente la representacin en complemento a dos,
aunque pueden usarse otras en algunas circunstancias.
En las secciones a continuacin, nos referiremos exclusivamente al caso de nmeros signados en binario (y
contrastaremos con el decimal con fines didcticos), esto no significa que lo mostrado aqu se pueda llevar en forma
anloga a otras bases (hexadecimal, u octal, por ejemplo).

Signo y Magnitud
Para n = 8 (8 bits) en Signo y Magnitud
Valores de 8 bits

Interpretado en Signo y Magnitud en decimal

Interpretado como Entero sin signo en decimal

00000000

00000001

00000010

...

...

...

01111110

126

126

01111111

127

127

10000000

128

10000001

129

10000010

130

...

...

...

11111101

125

253

11111110

126

254

11111111

127

255

Un primer enfoque al problema de representar un nmero signado de n-bits consiste en asignar:


1. un bit para representar el signo. Ese bit a menudo es el bit ms significativo o MSB (de sus siglas en ingls) y,
por convencin: un 0 denota un nmero positivo, y un 1 denota un nmero negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del nmero en valor absoluto.
Y se conoce como Signo y Magnitud.
Este enfoque es directamente comparable a la forma habitual de mostrar el signo (colocando "+" o "-" al lado de la
magnitud del nmero). Algunas de las primeras computadoras binarias (la IBM 7090) utilizaron esta representacin,
quizs por su relacin obvia con la prctica habitual.
El formato Signo y Magnitud es adems el habitual para la representacin del significando en nmeros en punto
flotante.

Representacin de nmeros con signo

Ejemplo de Signo y Magnitud


Sea una representacin en formato de Signo y Magnitud que nos permite codificar en binario en punto fijo con 8 bits
(un byte). Esto nos otorga 1 bit para el signo y 7 bits para la magnitud. Con 8 bits, podemos representar, en teora al
menos (vase Desventajas, ms abajo), 28 = 256 nmeros. Los cuales, segn ste formato, van a estar repartidos
entre 128 nmeros positivos (bit de signo en 0) y 128 nmeros negativos (bit de signo en 1).
Supongamos ahora, que tenemos que representar el nmero -9710 (decimal). Procedemos a:
1. Tomar nota del signo del nmero -9710, que siendo negativo, llevar como bit de signo un 1;
2. Realizar la conversin: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012;
3. Colocar todo junto, el nmero -9710 en binario con formato de Signo y Magnitud es: 111000012. Donde el 1 en el
bit ms significativo indica un nmero negativo, y 11000012 es el significando en valor absoluto.
Para el caso inverso, dado un nmero binario en Signo y Magnitud, por ejemplo, 101101012, procedemos a:
1. Analizar el bit ms significativo, que siendo un 1 indica que el nmero es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en cuenta que el valor obtenido
est en valor absoluto y la magnitud real estar dada por el bit de signo obtenido antes: 01101012 = |5310|. Siendo
que el bit de signo es 1, el nmero real es -5310. Si el bit de signo fuese 0, el nmero hubiese sido +5310.

Desventajas de la representacin en Signo y Magnitud


Siguiendo con el ejemplo de n = 8 (8 bits).
No permite operar aritmticamente. De intentar hacer una suma sencilla de un nmero positivo y uno negativo, se
obtienen resultados incorrectos. Por ejemplo: 000101012 + 111000012 = 111101102 (+2110 + -9710 = -11810
-7610).
Posee doble representacin del cero. Al representar en Signo y Magnitud, aparece el cero signado: 000000002
(+010) y 100000002 (-010).

Ventajas de la representacin en Signo y Magnitud


Siguiendo con el ejemplo de n = 8 (8 bits).
Posee un rango simtrico: los nmeros van del +12710 = 011111112, pasando por el +010 = 000000002 y el -010 =
100000002, hasta el -12710 = 111111112. Y en forma general, para n-bits, el rango (en decimal) para Signo y
Magnitud es (-2n-1-1; 2n-1-1), o bien 2n-1-1.

Complemento a la base menos uno


Para n = 8 (8 bits) en Complemento a uno
Valores de 8 bits

Interpretado en Complemento a uno en decimal

Interpretado como Entero sin signo en decimal

00000000

00000001

00000010

...

...

...

01111110

126

126

01111111

127

127

10000000

127

128

10000001

126

129

Representacin de nmeros con signo

10000010

125

130

...

...

...

11111101

253

11111110

254

11111111

255

Otro enfoque sera representar nmeros negativos usando el complemento a la base menos uno. En el caso de los
nmeros binarios, sera el complemento a uno y la forma del complemento a uno de un nmero binario es un NOT
bit a bit aplicado al nmero, es decir, la inversin de unos por ceros y ceros por unos. De esta forma, en la
representacin por Complemento a uno de un nmero signado de n-bits asignamos:
1. un bit para representar el signo. Ese bit a menudo es el bit ms significativo y, por convencin: un 0 denota un
nmero positivo, y un 1 denota un nmero negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del nmero en valor absoluto para el
caso de nmeros positivos, o bien, en el complemento a uno del valor absoluto del nmero, en caso de ser
negativo.
Observar as que la representacin en Complemento a uno de un nmero negativo se puede obtener de la
representacin en Signo y Magnitud por una mera inversin de unos por ceros y ceros por unos del significando.
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.

Ejemplo de Complemento a uno


Sea una representacin en formato de Complemento a uno que nos permite codificar en binario en punto fijo con 8
bits (un byte). Al igual que con la representacin en Signo y Magnitud, esto nos otorga 1 bit para el signo y 7 bits
para la magnitud. Con 8 bits, podemos representar, en teora al menos (vase nuevamente Desventajas, ms abajo),
28 = 256 nmeros. Los cuales, segn ste formato, van a estar repartidos entre 128 nmeros positivos (bit de signo en
0) y 128 nmeros negativos (bit de signo en 1).
Supongamos ahora, que tenemos que representar el nmero -9710. Procedemos a:
1. Tomar nota del signo del nmero -9710, que siendo negativo, llevar como bit de signo un 1;
2. Como el signo es negativo, el nmero a continuacin del bit de signo, deber expresarse en complemento a uno.
Al realizar la conversin: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012, y el
complemento a uno de 11000012 es C1(1100001) = 00111102;
3. Colocar todo junto, el nmero -9710 en binario con formato de Complemento a uno es: 100111102. Donde el 1 en
el bit ms significativo indica un nmero negativo, y 00111102 es el significando en complemento a uno del valor
absoluto del nmero.
Para el caso inverso, dado un nmero binario en Complemento a uno, por ejemplo, 101101012, procedemos a:
1. Analizar el bit ms significativo, que siendo un 1 indica que el nmero es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en cuenta que: el valor obtenido
est en valor absoluto, que la magnitud real estar dada por el bit de signo obtenido antes, y que en caso de ser bit
de signo negativo (como es el caso) se deber obtener el complemento a uno: C1(0110101) = 10010102 = |7410|.
Siendo que el bit de signo es 1, el nmero real es -7410. Si el bit de signo fuese 0, el nmero hubiese sido
01101012 = +5310 ('sin complementar a uno).

Representacin de nmeros con signo

Desventajas de la representacin en Complemento a uno


Siguiendo con el ejemplo de n = 8 (8 bits).
Posee doble representacin del cero. Al representar en Complemento a uno, aparece nuevamente el cero signado:
000000002 (+010) y 111111112 (-010).

Ventajas de la representacin en Complemento a uno


Siguiendo con el ejemplo de n = 8 (8 bits).
Posee un rango simtrico: los nmeros van del +12710 = 011111112, pasando por el +010 = 000000002 y el -010 =
111111112, hasta el -12710 = 100000002. Y en forma general, para n-bits, el rango (en decimal) para
Complemento a uno es (-(2n-1)-1; 2n-1-1), o bien 2n-1-1.
Permite operar aritmticamente. NOTA: al operar se debe sumar el acarreo obtenido al final de la adicin/resta
realizadas (conocido como end-around carry), en caso de haberlo obtenido, para conseguir el resultado correcto.
Por ejemplo: 000101012 + 100111102 = 101100112 (+2110 + -9710 = -7610) puesto que el end-around carry es
cero; pero, 000000102 + 111111102 = 1000000002 (+210 + -110 = -010 +110), que corregimos mediante
000000102 + 111111102 = 000000002 + 12 = 000000012, que es el resultado correcto.
Los protocolos de Internet IPv4, ICMP, UDP y TCP usan todos el mismo algoritmo de suma de verificacin de 16
bits en complemento a uno. Aunque la mayora de la computadoras carecen del hardware para manejar acarreo del
ltimo bit (end-around carry), la complejidad adicional es aceptada ya que es igualmente sensible a errores en todas
las posiciones de bits. En UDP, una representacin de todos ceros indica que la suma de verificacin opcional ha
sido omitida. La otra representacin, todos unos, indica un valor 0 en la suma de verificacin (las sumas de
verificacin son obligatorias para IPv4, TCP e ICMP; fueron omitidas en IPv6).

Complemento a la base
Para n = 8 (8 bits) en Complemento a dos
Valores de 8 bits

Interpretado en Complemento a dos en decimal

Interpretado como Entero sin signo en decimal

00000000

00000001

00000010

...

...

...

01111110

126

126

01111111

127

127

10000000

128

128

10000001

127

129

10000010

126

130

...

...

...

11111101

253

11111110

254

11111111

255

Otro enfoque sera representar nmeros negativos usando el complemento a la base. En el caso de los nmeros
binarios, sera el complemento a dos y la forma de obtener el complemento a dos de un nmero binario es mediante
la obtencin del complemento a uno y sumarle uno, o bien:

Representacin de nmeros con signo

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

De esta forma, en la representacin por Complemento a dos de un nmero signado de n-bits asignamos:
1. un bit para representar el signo. Ese bit a menudo es el bit ms significativo y, por convencin: un 0 denota un
nmero positivo, y un 1 denota un nmero negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del nmero en valor absoluto para el
caso de nmeros positivos, o bien, en el complemento a dos del valor absoluto del nmero, en caso de ser
negativo.
Observar as que la representacin en Complemento a dos de un nmero negativo se puede obtener de la
representacin en Signo y Magnitud por una mera inversin de unos por ceros y ceros por unos del significando, y
sumarle uno al valor obtenido.

Ejemplo de Complemento a dos


Sea una representacin en formato de Complemento a dos que nos permite codificar en binario en punto fijo con 8
bits (un byte). Al igual que con la representacin en Signo y Magnitud, y Complemento a uno, esto nos otorga 1 bit
para el signo y 7 bits para la magnitud. Con 8 bits, podemos representar, 28 = 256 nmeros. Los cuales, segn ste
formato, van a estar repartidos entre 128 nmeros positivos (bit de signo en 0) y 128 nmeros negativos (bit de signo
en 1).
Supongamos ahora, que tenemos que representar el nmero -9710. Procedemos a:
1. Tomar nota del signo del nmero -9710, que siendo negativo, llevar como bit de signo un 1;
2. Como el signo es negativo, el nmero a continuacin del bit de signo, deber expresarse en complemento a dos.
Al realizar la conversin: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012, y el
complemento a uno de 11000012 es C1(1100001) = 00111102, le sumamos uno para obtener el complemento a
dos: 00111102 + 00000012 = 00111112;
Colocar todo junto, el nmero -9710 en binario con formato de Complemento a dos es: 100111112. Donde el 1 en
el bit ms significativo indica un nmero negativo, y 00111112 es el significando en complemento a dos del valor
absoluto del nmero.
Para el caso inverso, dado un nmero binario en Complemento a dos, por ejemplo, 101101012, procedemos a:
1. Analizar el bit ms significativo, que siendo un 1 indica que el nmero es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en cuenta que: el valor obtenido
est en valor absoluto, que la magnitud real estar dada por el bit de signo obtenido antes, y que en caso de ser bit
de signo negativo (como es el caso) se deber obtener el complemento a dos: C2(0110101) = C1(0110101) +
00000012, luego C1(0110101) = 10010102, y al sumarle 1, 10010112 = |7510|. Siendo que el bit de signo es 1, el
nmero real es -7510. Si el bit de signo fuese 0, el nmero hubiese sido 01101012 = +5310 (sin complementar a
dos).

Representacin de nmeros con signo

Desventajas de la representacin en Complemento a dos


Siguiendo con el ejemplo de n = 8 (8 bits).
Posee un rango asimtrico: los nmeros van del +12710 011111112, pasando por el +010, 000000002. Y aqu
aparece la primera diferencia, el 111111112, ya no es -010 como en la representacin anterior, sino que es -110, y
al llegar al 100000002 nos encontramos con que el complemento a dos de 100000002 es 100000002, el mismo
nmero!. Por convencin, se asigna a este nmero particular el valor -1282 (para 8 bits). Luego, en forma general,
para n-bits, el rango (en decimal) para Complemento a dos es (-2n-1; 2n-1-1).

Ventajas de la representacin en Complemento a dos


Siguiendo con el ejemplo de n = 8 (8 bits).
No posee doble representacin del cero.
Permite operar aritmticamente.

En Exceso a bn-1
Para n = 8 (8 bits) en Exceso a 127
Valores de 8 bits

Interpretado en Exceso a 127 en decimal

Interpretado como Entero sin signo en decimal

00000000

-127

00000001

-126

00000010

-125

...

...

...

01111110

-1

126

01111111

127

10000000

128

10000001

129

10000010

130

...

...

...

11111101

126

253

11111110

127

254

11111111

128

255

Un ltimo enfoque al problema de representar un nmero signado de n-bits consiste en asignar tomar el valor real del
nmero a representar, sumarle la base elevada al nmero de dgitos que se tienen disponibles, y restarle uno. En el
caso particular de base 2, sistema binario, el nmero x en de n-bits es representado como x + 2n-1. Esto se conoce
como representacin en Exceso a bn-1, puesto que cada nmero se le suma el mismo valor y est en exceso por dicho
valor.
El formato en exceso es habitual para la representacin del exponente en nmeros en punto flotante, por ejemplo,
para la norma IEEE-754.

Representacin de nmeros con signo

Ejemplo de Exceso 2n-1


Sea una representacin en formato de Exceso que nos permite codificar en binario en punto fijo con 8 bits (un byte).
Luego, los nmeros 8 bits sern representados en Exceso a 28-1 -1 = 12710. Con 8 bits, podemos representar, 28 =
256 nmeros.
Supongamos ahora, que tenemos que representar el nmero -9710 (decimal). Procedemos a:
1. Tomar el nmero -9710 y sumarle el exceso, en este caso 12710, luego -9710 + 12710 = 3010;
2. Convertimos a binario, en este caso. Luego, 3010 = 000111102.
Para el caso inverso, dado un nmero binario en Exceso 12710, por ejemplo, 101101012, procedemos a:
1. Convertir el nmero a la base deseada, por ejemplo, en decimal: 101101012 = 18110;
2. Pero el valor obtenido est en exceso 127, luego debemos quitarle dicho exceso, restando 127: 18110 - 12710 =
5410.

Desventajas de la representacin en Exceso 2n-1


Siguiendo con el ejemplo de n = 8 (8 bits).
Requiere de operaciones aritmticas intermedias para su obtencin, y de cambiar el nmero de bits se deben
actualizar dichas operaciones intermedias para reflejar el nuevo exceso.
Posee rango asimtrico: ste va desde +12810 = 111111112 hasta -12710 = 000000002. Y en forma general, para
n-bits, el rango (en decimal) para Exceso 2n es (-2n-1+1; 2n-1).

Ventajas de la representacin en Exceso 2n-1


Siguiendo con el ejemplo de n = 8 (8 bits).
Permite operar aritmticamente, pero hay que tener en cuenta que cada operacin lleva asociado su exceso y esto
hay que restarselo al resultado final, para corregir la representacin. Por ejemplo, 000111102 + 101101012 =
110100112 (-9710 + 5410 = 21110 -4310). El resultado, en aparente exceso 12710, 21110, al quitarle dicho exceso
es 21110 - 12710 = 8410. Pero, hay que tener en cuenta que al sumar dos nmeros con exceso 12710, debemos
restar, dos veces el exceso. Luego 8410 - 12710 = -4310, que es el resultado correcto.
No hay empaquetacin del nmero. Por esto nos referimos a que no hay que recordar que partes del nmero son
signo y significando, sino que los n-bits, son el nmero.
son los mas espesificados normal mente.

Tabla de comparacin
La tabla siguiente compara la representacin de los enteros entre 8 y -8 (incluidos) usando 4 bits.

Representacin de enteros de 4 bits


Decimal

Entero sin signo

Signo y Magnitud

Complemento a uno

Complemento a dos

En exceso a 7

+8

1000

n/d

n/d

n/d

1111

+7

0111

0111

0111

0111

1110

+6

0110

0110

0110

0110

1101

+5

0101

0101

0101

0101

1100

+4

0100

0100

0100

0100

1011

+3

0011

0011

0011

0011

1010

+2

0010

0010

0010

0010

1001

Representacin de nmeros con signo

+1

0001

0001

0001

0001

1000

+0

0000

0000

0000

0000

0111

-0

n/d

1000

1111

n/d

n/d

-1

n/d

1001

1110

1111

0110

-2

n/d

1010

1101

1110

0101

-3

n/d

1011

1100

1101

0100

-4

n/d

1100

1011

1100

0011

-5

n/d

1101

1010

1011

0010

-6

n/d

1110

1001

1010

0001

-7

n/d

1111

1000

1001

0000

-8

n/d

n/d

n/d

1000

n/d

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Representacin de nmeros con signo Fuente: http://es.wikipedia.org/w/index.php?oldid=47755954 Contribuyentes: AldanaN, Baiji, Carmin, Diegusjaimes, Edmenb, Elultimolicantropo,
Farisori, GermanX, House, Humbefa, Humberto, Ignacio Icke, Isha, JMCC1, Jatrobat, Javierito92, L30nc1t0, LordT, Magister Mathematicae, Manw, Matdrodes, Oscar ., Queninosta, Raystorm,
Rodia, Rovnet, Rubsancas, Soulreaper, Tano4595, Tirithel, Tortillovsky, Vitamine, Xosema, 103 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported
http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/

Das könnte Ihnen auch gefallen