domingo, 1 de abril de 2012


Representación de un número en un ordenador

Representar (o codificar) un número significa expresarlo en forma binaria. La representación de números en un ordenador es necesaria para que éste pueda almacenarlos y manipularlos. Sin embargo, el problema es que un número matemático puede ser infinito (tan grande como se desee), pero la representación de un número en un ordenador debe ocupar un número de bits predeterminado. Por lo tanto, la clave es predeterminar un número de bits y cómo se interpretan para que representen la cifra de la manera más eficiente posible. Por este motivo, sería tonto codificar un carácter utilizando 16 bits (65.536 posibilidades) cuando se utilizan menos de 256.

Representación de un número natural

Un número natural es un número entero positivo o cero. La elección de la cantidad de bits a utilizar depende del intervalo de números que se utilizarán. Para codificar los números naturales entre 0 y 255, todo lo que se necesita son 8 bits (un byte) como 28=256. Por lo general, la codificación de un bit n se puede utilizar para representar números naturales entre 0 y 2n-1.
Para representar un número natural, una vez definido el número de bits se utilizarán para su codificación, ordene los bits en celdas binarias (cada bit ubicado de acuerdo a su peso binario en el orden de derecha a izquierda) y luego "llene" los bits que no se utilizan con ceros.

Representación de un número entero

Un número entero es un número completo que puede ser negativo. Por lo tanto, el número se debe codificar de manera que se pueda distinguir si es positivo o negativo y de forma que siga las reglas de adición. El truco consiste en utilizar un método denominado complemento doble.
  • Un número entero o cero se representará en base binaria (base 2) como un número natural, con la excepción de que el bit de mayor peso (aquel que se encuentra más a la izquierda) representa el signo más o menos. Por lo tanto, para un número entero o cero, este bit se debe establecer en 0 (lo que corresponde al signo más, así como 1 es el signo menos). De este modo, si un número natural se codifica utilizando 4 bits, el mayor número posible será 0111 (o 7 en base decimal).
    Generalmente, el mayor número entero posible codificado utilizando n bits será 2n-1-1.
  • Un número entero negativo se codifica utilizando complementos dobles. 
    El principio de los complementos dobles
    Se elige un número negativo.
    • Se toma su valor absoluto (su equivalente positivo)
    • Se representa en base binaria utilizando n-1 bits
    • Cada bit se cambia con su complemento (es decir, los ceros se reemplazan con unos y viceversa)
    • Se suma 1
    Nótese que al sumar un número y sus complementos dobles es resultado es 0
Veamos esto con un ejemplo: 
Queremos codificar el valor 5 utilizando 8 bits. Para hacer esto:
  • escriba el 5 en sistema binario 00000101
  • cámbielo por su complemento 11111010
  • sume 1: 11111011
  • la representación binaria en 8 bits de 5 es 11111011
Comentarios:
El bit de mayor peso es 1, de manera que es, de hecho, un número negativo. 
Si sumamos 5 y -5 (00000101 y 11111011) la suma da 0 (con el remanente 1).

Representación de un número real

El objetivo es representar un número con un punto decimal en sistema binario (por ejemplo, 101.01, que no se lee ciento uno punto cero uno ya que es, de hecho, un número binario, 5,25 en sistema decimal) mediante el formato 1.XXXXX... * 2n (en nuestro ejemplo, 1.0101*22). El estándar IEEE 754 define cómo codificar un número real.
Este estándar ofrece una forma de codificar un número utilizando 32 bits, y define tres componentes:
  • el signo más/menos se representa por un bit: el bit de mayor peso (aquel que se encuentra más a la izquierda)
  • el exponente se codifica utilizando 8 bits inmediatamente después del signo
  • la mantisa (los bits después del punto decimal) con los 23 bits restantes
Así, la codificación sigue la forma: 
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
  • la s representa al bit del signo.
  • cada e representa al exponente del bit
  • cada m representa a la mantisa del bit
Sin embargo, hay ciertas restricciones para los exponentes:
  • el exponente 00000000 está prohibido
  • el exponente 11111111 está prohibido. Sin embargo, a veces se utiliza para informar de errores. Esta configuración numérica se denomina NaN (Not a number), que significa No es un número.
  • Se le debe sumar 127 (01111111) al exponente para convertir al decimal en un número real dentro del sistema binario. Por lo tanto, los exponentes pueden variar de -254 a 255
Así, la fórmula para expresar números reales es:
(-1)^S * 2^( E - 127 ) * ( 1 + F )
donde:
  • S es el bit del signo y, por lo tanto, 0 se entiende como positivo ( -1^0=1 ).
  • E es el exponente al que se le debe sumar 127 para obtener el equivalente codificado
  • F es la parte de la fracción, la única que se expresa, y la que se le suma a 1 para realizar el cálculo.
Aquí hay un ejemplo:
Se codificará el valor 525,5.
  • 525,5 es positivo, por lo que el primer bit será 0.
  • Su representación en el sistema binario (base 2) es: 1000001101.1
  • Al normalizarlo, obtenemos: 1.0000011011*2^9
  • Sumándole 127 al exponente, que es 9, da 136 o, en sistema binario (base 2): 10001000
  • La mantisa está compuesta por la parte decimal de 525,5 en base 2 normal, que es 0000011011.
  • Como la mantisa debe tomar 23 bits, se deben agregar ceros para completarla: 
    00000110110000000000000
  • La representación binaria de 525,5 bajo el estándar IEEE 754 es, por lo tanto: 
    0 1000 1000 00000110110000000000000 
    0100 0100 0000 0011 0110 0000 0000 0000 (4403600 en sistema hexadecimal)
A continuación hay otro ejemplo, esta vez utilizando un número real negativo :
Se codificará el valor -0,625.
  • El bit s es 1, como 0,625 es negativo.
  • 0,625 se escribe en sistema binario (base 2) de la siguiente manera: 0.101
  • Queremos escribirlo en la forma 1.01 x 2-1
  • Consecuentemente, el exponente vale 1111110 como 127 - 1 = 126 (o 1111110 en sistema binario)
  • La mantisa es 01000000000000000000000 (sólo se representan los dígitos después del punto decimal, ya que el número entero es siempre equivalente a 1)
  • La representación binaria de 0,625 bajo el estándar IEEE 754 es, por lo tanto: 
    1 1111 1110 01000000000000000000000 
    1111 1111 0010 0000 0000 0000 0000 0000 (FF 20 00 00 en sistema hexadecimal)

Convertir números decimales a binario en Excel 


Aunque no funciona para números con punto flotante algo curioso.

No hay comentarios:

Publicar un comentario