Datos personales

Mi foto
Elizarraras Jose Luis, Gutierrez Juan Manuel, Montoya Katherine, Ramos Carlos Alberto

domingo, 19 de septiembre de 2010

VALOR DECIMAL DE LOS 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 tema trata cuatro métodos de extender el sistema binario para representar números con signo: signo y magnitud, complemento a uno y complemento a dos.
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.

SIGNO Y MAGNITUD
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 significado que es la magnitud del número en valor absoluto.

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.

Desventajas
Operando con n = 8 (8 bits).
  • No permite operar artméticamente. 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. Al representar en Signo y Magnitud, aparece el cero signado: 000000002 (+010) y 100000002 (-010).

Ventajas
Operando con 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 y Magnitud es (-2n-1-1; 2n-1-1), o bien ± 2n-1-1.

COMPLEMENTO A UNO
Otro enfoque es representar números negativos usando el complemento a uno. La forma del complemento a uno de un número binario es un NOT bit a bit aplicado al número, es decir, la inversión de unos por ceros y ceros por unos. De esta forma, en la representación por Complemento a uno de un número signado de n-bits se asigna:
  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 ser negativo.

Se observa así, que la representación en Complemento a uno de un número negativo, se puede obtener de la representació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 UNIVAC 1100/2200, entre muchas otras, utilizaron la aritmética en complemento a uno.

Desventajas
Operando con 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
Operando con 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) para Complemento 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/resta realizadas (conocido como end-around carry), en caso de haberlo obtenido, para conseguir el resultado correcto.

COMPLEMENTO A DOS
Permite codificar en binario en punto fijo con 8 bits (un byte). Al igual que con la representación 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 números. Los cuales, según éste formato, van a estar repartidos entre 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. Se proce 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 el complemento a uno de 11000012 es C1(1100001) = 00111102, le sumamos uno para obtener el complemento a dos: 00111102 + 00000012 = 00111112;

Al colocar todo junto, el número -9710 en binario con formato de Complemento a dos es: 100111112. Donde el 1 en el bit más significativo indica un número negativo, y 00111112 es el significando en complemento a dos del valor absoluto del número.
Para el caso inverso, dado un número binario en Complemento a dos, por ejemplo, 101101012, se proce 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 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 número real es -7510. Si el bit de signo fuese 0, el número hubiese sido 01101012 = +5310 (sin complementar a dos).


Desventajas
Operando con 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 representacion anterior, sino que es -110, y al llegar al 100000002 nos encontramos con que el complemento a dos de 100000002 es 100000002, ¡el mismo número!. Luego, en forma general, para n-bits, el rango (en decimal) para Complemento a dos es (-2n-1; 2n-1-1).

Ventajas
Operando con n = 8 (8 bits).
  • No posee doble representación del cero.
  • Permite operar aritméticamente.


Referencia:
http://es.wikipedia.org/wiki/Representación_de_números_con_signo#Ventajas_de_la_representaci.C3.B3n_en_Signo_y_Magnitud

No hay comentarios:

Publicar un comentario