cim_20_a4

9
Representación de números con signo 1 Representación de números con signo En matemáticas, los números negativos en cualquier base se representan del modo habitual, precediéndolos con un signo «». Sin embargo, en una computadora, hay varias formas de representar el signo de un número. Este artículo trata cuatro métodos de extender el sistema binario para representar números con signo: signo y magnitud, complemento a uno, complemento a dos y exceso a b n -1. Para la mayoría de usos, las computadoras modernas utilizan típicamente la representación en complemento a dos, aunque pueden usarse otras en algunas circunstancias. En las secciones a continuación, nos referiremos exclusivamente al caso de números signados en binario (y contrastaremos con el decimal con fines didácticos), esto no significa que lo mostrado aquí se pueda llevar en forma análoga 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 0 0 00000001 1 1 00000010 2 2 ... ... ... 01111110 126 126 01111111 127 127 10000000 0 128 10000001 1 129 10000010 2 130 ... ... ... 11111101 125 253 11111110 126 254 11111111 127 255 Un primer enfoque al problema de representar un número signado de n-bits consiste en asignar: 1. un bit para representar el signo. Ese bit a menudo es el bit más significativo o MSB (de sus siglas en inglés) y, por convención: un 0 denota un número positivo, y un 1 denota un número negativo; 2. los (n-1)-bits restantes para representar el significando que es la magnitud del número 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 número). Algunas de las primeras computadoras binarias (la IBM 7090) utilizaron esta representación, quizás por su relación obvia con la práctica habitual. El formato Signo y Magnitud es además el habitual para la representación del significando en números en punto flotante.

Upload: ricardoalejandro-garibay

Post on 18-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

sistemas

TRANSCRIPT

Page 1: CIM_20_A4

Representación de números con signo 1

Representación de números con signoEn matemáticas, los números negativos en cualquier base se representan del modo habitual, precediéndolos con unsigno «−». Sin embargo, en una computadora, hay varias formas de representar el signo de un número. Este artículotrata cuatro métodos de extender el sistema binario para representar números con signo: signo y magnitud,complemento a uno, complemento a dos y exceso a bn-1.Para la mayoría de usos, las computadoras modernas utilizan típicamente la representación en complemento a dos,aunque pueden usarse otras en algunas circunstancias.En las secciones a continuación, nos referiremos exclusivamente al caso de números signados en binario (ycontrastaremos con el decimal con fines didácticos), esto no significa que lo mostrado aquí se pueda llevar en formaanáloga 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 0 0

00000001 1 1

00000010 2 2

... ... ...

01111110 126 126

01111111 127 127

10000000 −0 128

10000001 −1 129

10000010 −2 130

... ... ...

11111101 −125 253

11111110 −126 254

11111111 −127 255

Un primer enfoque al problema de representar un número signado de n-bits consiste en asignar:1. un bit para representar el signo. Ese bit a menudo es el bit más significativo o MSB (de sus siglas en inglés) y,

por convención: un 0 denota un número positivo, y un 1 denota un número negativo;2. los (n-1)-bits restantes para representar el significando que es la magnitud del número 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 lamagnitud del número). Algunas de las primeras computadoras binarias (la IBM 7090) utilizaron esta representación,quizás por su relación obvia con la práctica habitual.El formato Signo y Magnitud es además el habitual para la representación del significando en números en puntoflotante.

Page 2: CIM_20_A4

Representación de números con signo 2

Ejemplo de Signo y MagnitudSea una representación 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 teoría almenos (véase Desventajas, más abajo), 28 = 256 números. Los cuales, según éste formato, van a estar repartidosentre 128 números positivos (bit de signo en 0) y 128 números negativos (bit de signo en 1).Supongamos ahora, que tenemos que representar el número -9710 (decimal). Procedemos a:1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo un 1;2. Realizar la conversión: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012;3. Colocar todo junto, el número -9710 en binario con formato de Signo y Magnitud es: 111000012. Donde el 1 en el

bit más significativo indica un número negativo, y 11000012 es el significando en valor absoluto.Para el caso inverso, dado un número binario en Signo y Magnitud, por ejemplo, 101101012, procedemos a:1. Analizar el bit más significativo, que siendo un 1 indica que el número 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|. Siendoque el bit de signo es 1, el número real es -5310. Si el bit de signo fuese 0, el número hubiese sido +5310.

Desventajas de la representación en Signo y MagnitudSiguiendo con el ejemplo de n = 8 (8 bits).• No permite operar aritméticamente. De intentar hacer una suma sencilla de un número positivo y uno negativo, se

obtienen resultados incorrectos. Por ejemplo: 000101012 + 111000012 = 111101102 (+2110 + -9710 = -11810 ≠-7610).

• Posee doble representación del cero. Al representar en Signo y Magnitud, aparece el cero signado: 000000002(+010) y 100000002 (-010).

Ventajas de la representación en Signo y MagnitudSiguiendo con el ejemplo de n = 8 (8 bits).• Posee un rango simétrico: los números 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 yMagnitud 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 0 0

00000001 1 1

00000010 2 2

... ... ...

01111110 126 126

01111111 127 127

10000000 −127 128

10000001 −126 129

Page 3: CIM_20_A4

Representación de números con signo 3

10000010 −125 130

... ... ...

11111101 −2 253

11111110 −1 254

11111111 −0 255

Otro enfoque sería representar números negativos usando el complemento a la base menos uno. En el caso de losnúmeros binarios, sería el complemento a uno y la forma del complemento a uno de un número binario es un NOTbit a bit aplicado al número, es decir, la inversión de unos por ceros y ceros por unos. De esta forma, en larepresentación por Complemento a uno de un número signado de n-bits asignamos:1. un bit para representar el signo. Ese bit a menudo es el bit más significativo y, por convención: un 0 denota un

número positivo, y un 1 denota un número negativo;2. los (n-1)-bits restantes para representar el significando que es la magnitud del número en valor absoluto para el

caso de números positivos, o bien, en el complemento a uno del valor absoluto del número, en caso de sernegativo.

Observar así que la representación en Complemento a uno de un número negativo se puede obtener de larepresentación en Signo y Magnitud por una mera inversión de unos por ceros y ceros por unos del significando.Este sistema numérico de representación era común en computadoras más antiguas; el PDP-1 y la serie de UNIVAC1100/2200, entre muchas otras, utilizaron la aritmética en complemento a uno.

Ejemplo de Complemento a unoSea una representación en formato de Complemento a uno que nos permite codificar en binario en punto fijo con 8bits (un byte). Al igual que con la representación en Signo y Magnitud, esto nos otorga 1 bit para el signo y 7 bitspara la magnitud. Con 8 bits, podemos representar, en teoría al menos (véase nuevamente Desventajas, más abajo),28 = 256 números. Los cuales, según éste formato, van a estar repartidos entre 128 números positivos (bit de signo en0) y 128 números negativos (bit de signo en 1).Supongamos ahora, que tenemos que representar el número -9710. Procedemos a:1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo un 1;2. Como el signo es negativo, el número a continuación del bit de signo, deberá expresarse en complemento a uno.

Al realizar la conversión: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012, y elcomplemento a uno de 11000012 es C1(1100001) = 00111102;

3. Colocar todo junto, el número -9710 en binario con formato de Complemento a uno es: 100111102. Donde el 1 enel bit más significativo indica un número negativo, y 00111102 es el significando en complemento a uno del valorabsoluto del número.

Para el caso inverso, dado un número binario en Complemento a uno, por ejemplo, 101101012, procedemos a:1. Analizar el bit más significativo, que siendo un 1 indica que el número 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 bitde 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 número real es -7410. Si el bit de signo fuese 0, el número hubiese sido01101012 = +5310 ('sin complementar a uno).

Page 4: CIM_20_A4

Representación de números con signo 4

Desventajas de la representación en Complemento a unoSiguiendo con el ejemplo de n = 8 (8 bits).• Posee doble representación del cero. Al representar en Complemento a uno, aparece nuevamente el cero signado:

000000002 (+010) y 111111112 (-010).

Ventajas de la representación en Complemento a unoSiguiendo con el ejemplo de n = 8 (8 bits).• Posee un rango simétrico: los números 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) paraComplemento a uno es (-(2n-1)-1; 2n-1-1), o bien ± 2n-1-1.

• Permite operar aritméticamente. NOTA: al operar se debe sumar el acarreo obtenido al final de la adición/restarealizadas (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 escero; pero, 000000102 + 111111102 = 1000000002 (+210 + -110 = -010 ≠ +110), que corregimos mediante000000102 + 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 verificación de 16bits en complemento a uno. Aunque la mayoría 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 todaslas posiciones de bits. En UDP, una representación de todos ceros indica que la suma de verificación opcional hasido omitida. La otra representación, todos unos, indica un valor 0 en la suma de verificación (las sumas deverificación 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 0 0

00000001 1 1

00000010 2 2

... ... ...

01111110 126 126

01111111 127 127

10000000 −128 128

10000001 −127 129

10000010 −126 130

... ... ...

11111101 −3 253

11111110 −2 254

11111111 −1 255

Otro enfoque sería representar números negativos usando el complemento a la base. En el caso de los númerosbinarios, sería el complemento a dos y la forma de obtener el complemento a dos de un número binario es mediantela obtención del complemento a uno y sumarle uno, o bien:

Page 5: CIM_20_A4

Representación de números con signo 5

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 representación por Complemento a dos de un número signado de n-bits asignamos:1. un bit para representar el signo. Ese bit a menudo es el bit más significativo y, por convención: un 0 denota un

número positivo, y un 1 denota un número negativo;2. los (n-1)-bits restantes para representar el significando que es la magnitud del número en valor absoluto para el

caso de números positivos, o bien, en el complemento a dos del valor absoluto del número, en caso de sernegativo.

Observar así que la representación en Complemento a dos de un número negativo se puede obtener de larepresentación en Signo y Magnitud por una mera inversión de unos por ceros y ceros por unos del significando, ysumarle uno al valor obtenido.

Ejemplo de Complemento a dosSea una representación en formato de Complemento a dos que nos permite codificar en binario en punto fijo con 8bits (un byte). Al igual que con la representación en Signo y Magnitud, y Complemento a uno, esto nos otorga 1 bitpara el signo y 7 bits para la magnitud. Con 8 bits, podemos representar, 28 = 256 números. Los cuales, según ésteformato, van a estar repartidos entre 128 números positivos (bit de signo en 0) y 128 números negativos (bit de signoen 1).Supongamos ahora, que tenemos que representar el número -9710. Procedemos a:1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo un 1;2. Como el signo es negativo, el número a continuación del bit de signo, deberá expresarse en complemento a dos.

Al realizar la conversión: el valor absoluto de -9710 es |-9710| = 9710. Que en binario es: 11000012, y elcomplemento a uno de 11000012 es C1(1100001) = 00111102, le sumamos uno para obtener el complemento ados: 00111102 + 00000012 = 00111112;

• Colocar todo junto, el número -9710 en binario con formato de Complemento a dos es: 100111112. Donde el 1 enel bit más significativo indica un número negativo, y 00111112 es el significando en complemento a dos del valorabsoluto del número.

Para el caso inverso, dado un número binario en Complemento a dos, por ejemplo, 101101012, procedemos a:1. Analizar el bit más significativo, que siendo un 1 indica que el número 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 bitde 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, elnúmero real es -7510. Si el bit de signo fuese 0, el número hubiese sido 01101012 = +5310 (sin complementar ados).

Page 6: CIM_20_A4

Representación de números con signo 6

Desventajas de la representación en Complemento a dosSiguiendo con el ejemplo de n = 8 (8 bits).• Posee un rango asimétrico: los números van del +12710 011111112, pasando por el +010, 000000002. Y aquí

aparece la primera diferencia, el 111111112, ya no es -010 como en la representación anterior, sino que es -110, yal llegar al 100000002 nos encontramos con que el complemento a dos de 100000002 es 100000002, ¡el mismonúmero!. Por convención, se asigna a este número 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 representación en Complemento a dosSiguiendo con el ejemplo de n = 8 (8 bits).• No posee doble representación del cero.• Permite operar aritméticamente.

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 0

00000001 -126 1

00000010 -125 2

... ... ...

01111110 -1 126

01111111 0 127

10000000 1 128

10000001 2 129

10000010 3 130

... ... ...

11111101 126 253

11111110 127 254

11111111 128 255

Un último enfoque al problema de representar un número signado de n-bits consiste en asignar tomar el valor real delnúmero a representar, sumarle la base elevada al número de dígitos que se tienen disponibles, y restarle uno. En elcaso particular de base 2, sistema binario, el número x en de n-bits es representado como x + 2n-1. Esto se conocecomo representación en Exceso a bn-1, puesto que cada número se le suma el mismo valor y está en exceso por dichovalor.El formato en exceso es habitual para la representación del exponente en números en punto flotante, por ejemplo,para la norma IEEE-754.

Page 7: CIM_20_A4

Representación de números con signo 7

Ejemplo de Exceso 2n-1

Sea una representación en formato de Exceso que nos permite codificar en binario en punto fijo con 8 bits (un byte).Luego, los números 8 bits serán representados en Exceso a 28-1 -1 = 12710. Con 8 bits, podemos representar, 28 =256 números.Supongamos ahora, que tenemos que representar el número -9710 (decimal). Procedemos a:1. Tomar el número -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 número binario en Exceso 12710, por ejemplo, 101101012, procedemos a:1. Convertir el número 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 representación en Exceso 2n-1Siguiendo con el ejemplo de n = 8 (8 bits).• Requiere de operaciones aritméticas intermedias para su obtención, y de cambiar el número de bits se deben

actualizar dichas operaciones intermedias para reflejar el nuevo exceso.• Posee rango asimétrico: é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 representación en Exceso 2n-1Siguiendo con el ejemplo de n = 8 (8 bits).• Permite operar aritméticamente, pero hay que tener en cuenta que cada operación lleva asociado su exceso y esto

hay que restarselo al resultado final, para corregir la representación. Por ejemplo, 000111102 + 101101012 =110100112 (-9710 + 5410 = 21110 ≠ -4310). El resultado, en aparente exceso 12710, 21110, al quitarle dicho excesoes 21110 - 12710 = 8410. Pero, hay que tener en cuenta que al sumar dos números con exceso 12710, debemosrestar, dos veces el exceso. Luego 8410 - 12710 = -4310, que es el resultado correcto.

• No hay empaquetación del número. Por esto nos referimos a que no hay que recordar que partes del número sonsigno y significando, sino que los n-bits, son el número.

son los mas espesificados normal mente.

Tabla de comparaciónLa tabla siguiente compara la representación de los enteros entre 8 y -8 (incluidos) usando 4 bits.

Representación 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

Page 8: CIM_20_A4

Representación de números con signo 8

+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

Page 9: CIM_20_A4

Fuentes y contribuyentes del artículo 9

Fuentes y contribuyentes del artículoRepresentación de números 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 anónimas

LicenciaCreative Commons Attribution-Share Alike 3.0 Unportedhttp:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/