Existen distintas formas de representar un número en base 2, y según cómo sea el número a representar, nos convendrá utilizar una u otra representación.
Binario
El caso más sencillo es cuando el número a representar $x$ es un número natural. Es decir, un entero positivo. En este caso usamos la notación binaria a la que estamos acostumbrados.
Ejemplo: Supongamos que $x=13$. Si para representarlo en binario decidimos utilizar 4 bits, lo representaríamos como:
$13_{10}=1101_{2}$
Pues: $1101_{2}=(1.2^{0}+0.2^{1}+1.2^{2}+1.2^{3} )_{10}=(1+4+8)_{10}=13_{10}$.
Complemento a 2
Un caso parecido al anterior es cuando $x$ es un número entero, y por lo tanto puede tomar valores negativos.
En este caso lo usual es utilizar la representación por "Complemento a 2" (CA2). En este tipo de representación, se utiliza un bit (el más significativo) para representar el signo de $x$, y los restantes bits sirven para codificar la magnitud de dicho entero.
El bit de signo es tal que:
- bit signo = 1 si $x$ es negativo
- bit signo = 0 si $x$ es positivo
El bit de signo deberá ser 1 pues $x$ es negativo. Por otro lado la magnitud a codificar es 5. Para codificar esta magnitud nos quedan 3 bits. La codificación de la magnitud la realizamos de la siguiente forma:
- Expresamos la magnitud en binario usando los 3 bits que nos quedan disponibles. En este caso $5_{10}=101_{2}$ en binario.
- Luego hallamos el complemento a 1 de la expresión anterior. Esto es, invertimos todos los bits de la expresión anterior de tal forma que si un bit vale 1, ahora pasa a valer 0 y a la inversa. Nos queda entonces el 010.
- Finalmente, al número obtenido le sumamos 001 y obtenemos 010+001=011.
$-5_{10}=1011_{CA2}$
Observaciones: En el caso que queramos representar un entero $x$ positivo en complemento a 2, el bit de signo será por supuesto 0 pero la magnitud no se debe codificar como explicamos antes para el caso de $x$ negativo, sino que se toma como magnitud la expresión en binario de dicha magnitud.
Así, si por ejemplo queremos representar el número positivo $x=5$ en CA2, el bit de signo valdría 0 y la magnitud la tomamos como 101. Por lo que se tiene:
$5_{10}=0101_{CA2}$
En la siguiente tabla se muestra cómo se expresan los números del -8 al 7 usando CA2 de 4 bits:
Expresión en CA2 | Equivalente decimal | |||
---|---|---|---|---|
bit3 | bit2 | bit1 | bit0 | |
0 | 1 | 1 | 1 | 7 |
0 | 1 | 1 | 0 | 6 |
0 | 1 | 0 | 1 | 5 |
0 | 1 | 0 | 0 | 4 |
0 | 0 | 1 | 1 | 3 |
0 | 0 | 1 | 0 | 2 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | -1 |
1 | 1 | 1 | 0 | -2 |
1 | 1 | 0 | 1 | -3 |
1 | 1 | 0 | 0 | -4 |
1 | 0 | 1 | 1 | -5 |
1 | 0 | 1 | 0 | -6 |
1 | 0 | 0 | 1 | -7 |
1 | 0 | 0 | 0 | -8 |
Punto fijo
Consideremos ahora el caso en que el número $x$ a representar ya no es entero sino que es un número fraccionario. Es decir que se puede escribir de la forma $x=\frac{a}{b}$, con $a$ y $b$ números enteros. En este caso lo usual es expresar el número en "punto fijo".
Ejemplo: Tomemos como ejemplo el número $x=\frac{23}{4}=5,75$. La parte entera de este número es 5 y la parte fraccionaria es 0,75. Supongamos que en nuestra computadora solo disponemos de 8 bits para representar este número. Supongamos además que decidimos utilizar 4 de esos bits para representar la parte entera y los restantes 4 bits para representar la parte fraccionaria. Lo que hacemos es:
- Primero escribimos la parte entera del número en forma binaria utilizando 4 bits. En este caso ya sabemos que $5_{10}=0101_{2}$
- Luego debemos escribir la parte fraccionaria. En este caso la parte fraccionaria será $0,75_{10}$ que se escribe como: $0,75_{10}=\frac{1}{2}+\frac{1}{4}=1 \times 2^{-1}+1 \times 2^{-2}+0 \times 2^{-3}+0 \times 2^{-4}=0,1100_{2}$.
$5,75_{10}=0101,1100_{PFijo}$
Punto flotante
Existe otra forma de expresar números fraccionarios, la cual se denomina "coma flotante" o también "punto flotante".
Es el mismo tipo de representación utilizada en la notación científica, donde por ejemplo el número $-32000$ se puede expresar como: $-3.2 \times 10^{4}$. En este caso se observan cuatro componentes:
- El signo; que en el ejemplo dado toma el valor -1
- Lo que se denomina significando o mantisa; que en este caso toma el valor 3.2
- la base; que en este caso vale 10
- el exponente; que en el ejemplo toma el valor 4
El formato de punto flotante mayormente utilizado es el IEEE 754 de precisión simple. Este utiliza un total de 32 bits para expresar el número y toma la forma (en base 2):
$(-1)^{signo} \times significando \times 2^{exponente-127}$
Expresar (o almacenar) este número en punto flotante binario consiste ahora en expresar el signo, la mantisa y el exponente en forma binaria, utilizando los 32 bits disponibles.
Para expresar el signo esto se utiliza un único bit de los 32 disponibles (el bit más significativo), al igual que en el caso de "complemento a 2". Es decir:
$signo = 0$ si $x>0$
$signo = 1$ si $x<0$
Para expresar el exponente se utilizan 8 bits (los bits 23 al 30) de los 32 disponibles.
Finalmente para expresar la mantisa se utilizan 23 bits (los bits 0 al 22 menos significativos).
Referencias
- Estándar IEEE 754 - http://es.wikipedia.org/wiki/IEEE_coma_flotante
No hay comentarios:
Publicar un comentario