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:
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).
Ventajas
Operando con n = 8 (8 bits).
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:
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).
Ventajas
Operando con n = 8 (8 bits).
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:
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:
Desventajas
Operando con n = 8 (8 bits).
Ventajas
Operando con n = 8 (8 bits).
Referencia:
http://es.wikipedia.org/wiki/Representación_de_números_con_signo#Ventajas_de_la_representaci.C3.B3n_en_Signo_y_Magnitud
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:
- 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;
- 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:
- 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;
- 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:
- Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo un 1;
- 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:
- Analizar el bit más significativo, que siendo un 1 indica que el número es negativo;
- 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