Coma flotante

Los números reales en binario tienen que almacenarse de forma especial en un ordenador. Los ordenadores representan los números como enteros binarios (números enteros que son potencias de dos), por lo que no hay una forma directa de que representen números no enteros, como los decimales, ya que no hay punto radix. Una de las formas en que los ordenadores sortean este problema es la representación en punto flotante, en la que "flotante" se refiere a que el punto radix puede subir o bajar cuando se multiplica por un exponente (potencia).


 

Resumen

En matemáticas y ciencias, los números muy grandes y muy pequeños se simplifican a menudo y se multiplican por una potencia de diez para hacerlos más fáciles de entender. Por ejemplo, puede ser mucho más fácil leer 1,2 billones como {\displaystyle 1.2\times 10^{12}} que 1.200.000.000.000. Esto también se puede utilizar con potencias negativas de diez para hacer números pequeños, lo que significa que se puede representar 0,000001 como 1 × {\displaystyle 1\times 10^{-6}}. Este proceso se denomina notación científica.

Dado que los ordenadores están limitados a los números enteros y binarios, esto significa que no pueden representar fácilmente los números decimales fraccionarios. Para representar los números fraccionarios, los ordenadores utilizan tres conjuntos de números binarios para hacer una representación en notación científica. Son: el bit con signo, que determina si el número es positivo (0) o negativo (1); el significante, que es una versión entera del número; y el exponente, que es la potencia por la que se multiplica la base.

Significado y

El significante se encuentra tomando su número y moviendo el punto radial hasta que no haya parte fraccionaria, convirtiéndolo en un entero. En decimal esto es convertir 1,45 en 145 moviendo el punto a la derecha 2 pasos, y en binario esto sería convertir 1101,0111 (13,4375) en 1101 0111 (215) moviendo el punto a la derecha 4 pasos; en ambos casos estos números no están relacionados entre sí fuera de usar los mismos dígitos en un ordenamiento similar.

De forma similar a como la notación científica hace que el significante sea lo más básico posible, el objetivo en los números de punto flotante es hacer que sea un número entero para que pueda ser representado en bytes y utilizado en los cálculos.

Exponente

El exponente es el número de dígitos por los que se ha movido el punto radial: si se mueve hacia la izquierda, el exponente es negativo, pero si se mueve hacia la derecha, es positivo. Como en el caso anterior, para convertir 1,45 en 145 hay que multiplicar por 100, por lo que el exponente es 2, ya que {\displaystyle 100=10^{2}}. Igualmente, convertir 1101,0111 (13,4375) en 1101 0111 (215) requiere mover el punto del radicando cuatro columnas a la derecha, por lo que el exponente es 4; esto puede verificarse en decimal como {\displaystyle 215\div 13.4375=16(2^{4})} .

Dado que el proceso es inverso al de la mayoría de los casos de notación científica, ya que implica convertir una fracción en un número entero en lugar de convertir un número entero grande en una fracción, los exponentes suelen ser negativos para desplazar el decimal hacia la izquierda; en decimal esto sería volver a convertir su número entero 145 en el número fraccionario 1,45 multiplicándolo por {\displaystyle 10^{-2}}. En lugar de utilizar un bit con signo a la izquierda, el exponente está sesgado, lo que da a los exponentes flotantes de 32 bits un rango de {\displaystyle 2^{-126}} a {\displaystyle 2^{127}}. El valor de salida del exponente sesgado puede encontrarse sumándole 127:

{\displaystyle b^{5}=132(5+127)=10000100}

{\displaystyle b^{-5}=122(-5+127)=01111010}

{\displaystyle b^{0}=127(0+127)=01111111}



 

Ejemplo

Decimal a Bicimal

Supongamos, por ejemplo, que queremos representar el número decimal 37,40625 a su contrapartida binaria: un bicimal (o decimal/fracción binaria). En primer lugar, tenemos que tomar nuestro número decimal, que está en potencias de 10, y convertirlo en binario, que está en potencias de 2. Una forma de hacerlo es restar la mayor potencia de dos posible hasta llegar a cero:

{\displaystyle 37.40625-\mathbf {32} (2^{5})=5.40625}

{\displaystyle 5.40625-\mathbf {4} (2^{2})=1.40625}

{\displaystyle 1.40625-\mathbf {1} (2^{0})=0.40625}

{\displaystyle 0.40625-\mathbf {0.25} (2^{-2})=0.15625}

{\displaystyle 0.15625-\mathbf {0.125} (2^{-3})=0.03125}

{\displaystyle 0.03125-\mathbf {0.03125} (2^{-5})=0}

Utilizando las potencias de dos anteriores, podemos representar nuestro número decimal {\displaystyle 37.40625} como sigue:

Poder:

{\displaystyle 2^{5}}

{\displaystyle 2^{4}}

{\displaystyle 2^{3}}

{\displaystyle 2^{2}}

{\displaystyle 2^{1}}

{\displaystyle 2^{0}}

-

{\displaystyle 2^{-1}}

{\displaystyle 2^{-2}}

{\displaystyle 2^{-3}}

{\displaystyle 2^{-4}}

{\displaystyle 2^{-5}}

Valor:

1

0

0

1

0

1

-

0

1

1

0

1

Bicimal para flotar

Hemos validado que nuestro número decimal {\displaystyle 37.40625} se representa en binario como {\displaystyle 100101.01101} . Sin embargo, el problema de los ordenadores es que representan los números como potencias enteras de dos mediante bits, lo que complica los números fraccionarios y negativos. De acuerdo con la norma IEEE-754, la forma en que se suele hacer con un ordenador es crear un número de 32 bits en coma flotante que consta de tres partes: el signo, 1 bit para determinar si nuestro número es positivo o negativo; el exponente, 8 bits para representar nuestro exponente y al que añadimos 127 para evitar los bytes con signo; y nuestro significante, que es nuestro número binario sin punto bicálico repartido en 23 bits. Como tenemos que mover nuestro punto bicíclico 5 lugares para hacer {\displaystyle 100100.01101} en el significando {\displaystyle 10010001101} nuestro exponente es {\displaystyle 132(5+127)} . Utilizando un flotador de 32 bits podemos representar 37,40625 así:

Tipo:

±

Exponente

Significado y

Valor:

0

1

0

0

0

0

1

0

0

0

0

1

0

1

0

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

Significado:

+

{\displaystyle 2^{7}+2^{2}=132}

{\displaystyle 2^{20}+2^{18}+2^{16}+2^{15}+2^{13}=1,417,216}



 

Páginas relacionadas

 

Preguntas y respuestas

P: ¿Qué son los números reales?


R: Los números reales son cualquier número que pueda expresarse como decimal, incluidas las fracciones y los números irracionales.

P: ¿Cómo almacenan los ordenadores los números binarios?


R: Los ordenadores almacenan los números binarios como enteros binarios, que son números enteros que son potencias de dos.

P: ¿Existe una forma directa de que los ordenadores representen números no enteros como los decimales?


R: No, no hay una forma directa de que los ordenadores representen números no enteros como decimales porque no hay punto radix.

P: ¿Cuál es el propósito de la representación en coma flotante?


R: La representación en coma flotante permite a los ordenadores eludir el problema de no tener un punto de radix al permitir que el punto de radix se mueva más alto o más bajo cuando se multiplica por un exponente (potencia).

P: ¿A qué se refiere el término "flotante" en la representación en coma flotante?


R: El término "flotante" se refiere a cómo el punto radix puede moverse más alto o más bajo cuando se multiplica por un exponente (potencia).

P: ¿Cómo se calcula un exponente (potencia)?


R: Un exponente (potencia) se calcula multiplicando un número base por sí mismo un determinado número de veces. Por ejemplo, 2^3 = 8 porque 2 x 2 x 2 = 8.

AlegsaOnline.com - 2020 / 2023 - License CC3