Número de coma flotante: ¿qué es? Simplemente explicado con ejemplos
En este consejo práctico, le mostramos qué es un número de punto flotante y cómo difiere de un número de punto fijo.
Número de coma flotante: ¿qué es?
En informática, el número de coma flotante se usa a menudo para medir dispositivos que se supone que funcionan con cierta precisión.
- Un número de coma flotante (o "número de coma flotante") es una representación de un número usando notación exponencial. En casos excepcionales, esto solo funciona aproximadamente. También puede representar el número 1230000 con el número 1.23 ⋅ 10⁶.
- El 1.23 se llama "Mantissa". El 10 es la "base" y el 6 es el "exponente". Por cierto, también se puede agregar un signo a la mantisa. Sin embargo, también puede aplicar todo al sistema dual. También puede representar el número 10101100 con el número 1.0101100 ⋅ 2⁷. La computadora solo almacena el signo, la mantisa y el exponente.
- Las computadoras generalmente mueven la coma hacia adelante y hacia atrás hasta que solo hay un 1 delante de la coma. Entonces la PC solo tiene que guardar los lugares decimales de la mantisa y el exponente.
- Para que el exponente se pueda guardar como un número positivo, se agrega un número fijo, el llamado sesgo. El exponente más pequeño posible del lugar antes del punto decimal (- sesgo) se guarda como 0.
- A diferencia del número de punto fijo, la coma no está en un punto fijo en un número de punto flotante.
Half, Float & Double: codificación común de números de coma flotante
Ciertamente te has topado con estos tres términos, especialmente al programar con Arduino. Estas son representaciones estandarizadas.
- El tipo de datos "mitad" es un número de 16 bits. El bit más a la izquierda es responsable del signo. El exponente tiene 5 bits y la mantisa 10. El sesgo utilizado es 15. Como el primer bit de la mantisa es (casi) siempre 1, esto no se guarda.
- El tipo de datos "flotante" (o "único") es un número de 32 bits. Aquí también se usa un poco para el signo. Sin embargo, el exponente tiene 8 bits (sesgo = 127) y la mantisa 23.
- El tipo de datos "doble" también usa un bit para el signo. Aquí, sin embargo, el exponente tiene 11 bits (sesgo = 1023) y la mantisa incluso 52 bits. En total, esto es 64 bits, es decir, 8 bytes.
- Además de estos tres tipos de datos comunes, hay muchos más. Sin embargo, estos no se usan principalmente porque la precisión de la mitad, flotación y doble ya es lo suficientemente buena.
Convierta números decimales en números de coma flotante: cómo funciona
Finalmente, nos gustaría mostrarle cómo puede convertir un número decimal normal en un número de coma flotante.
- En este ejemplo usamos el número decimal 18.4. El número antes del punto decimal se transfiere por primera vez al sistema dual. Como resultado, debería obtener (10010) ₂.
- Luego tienes que convertir el 0.4. Primero multiplique el 0.4 por 2. Obtendrá 0.8 como resultado. Anote el número antes de la coma. En este caso es un 0. Luego multiplique el 0.8 por 2. Esta vez obtendrá 1.6 como resultado. Tome nota del 1 y continúe calculando con 0.6. Después de un tiempo, notará que el patrón se repite (en este ejemplo). Finalmente, escriba todos los números de arriba a abajo: 011001100110 ...
- Luego suma los números: Agregue también (⋅ 2⁰) para obtener 10010.01100110 ... ⋅ 2⁰. Luego mueva la coma hasta que solo haya un 1 delante del punto decimal, y también cambie la potencia adecuadamente. Como resultado, debería obtener 1.001001100110 ... ⋅ 2⁴, ya que ha movido el punto decimal 4 lugares a la izquierda. Este paso también se llama "normalización".
- En este ejemplo usamos el tipo de datos "float". Entonces agregue el valor de sesgo apropiado a su exponente. También debe convertir el resultado del cálculo 4 + 127 = 131 en un número binario. El número 131 es el número 10000011 en el sistema dual.
- Ahora puede escribir el número de punto flotante terminado. Primero escribe el bit para el signo. Como es un número positivo, el primer bit es un 0. Luego debe escribir 131. Todo encaja perfectamente en este caso, ya que este número requiere 8 bits y 8 bits están disponibles para un flotante. Finalmente, debe escribir los primeros 23 bits de la mantisa, ya que la mantisa tiene 23 bits disponibles para un flotador.
- Por lo tanto, su número de coma flotante terminado debe ser el número 01000001100100110011001100110011. Un poco más claro es el número 0 | 10000011 | 00100110011001100110011.
Convierta el número de coma flotante a número decimal: así es como
Finalmente, nos gustaría mostrarle cómo puede convertir un número de coma flotante en un número decimal nuevamente. Para esto tomamos el número 1000001100100110011001100110011.
- Primero llene el número (frente) con ceros hasta que obtenga un número de 16, 32 o 64 bits. En este caso es 01000001100100110011001100110011.
- El primer dígito representa el signo. Entonces nuestro número es positivo.
- Luego escribe los siguientes 8 dígitos (en este caso) y resta el sesgo. (10000011) ₂ = 131 → 131 - 127 = 4 → Entonces hay "⋅ 2⁴" en la parte posterior.
- Ahora escriba un "1" y luego todos los números restantes, así como el "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Luego mueva la coma 4 lugares a la derecha para que pueda omitir el "⋅ 2⁴": 10010.0110011001100110011
- Luego, convierta 10010 a un entero como de costumbre. Tienes 18.
- Ahora tienes que convertir los lugares decimales. El primer dígito después de la coma tiene el valor 1: 2¹, el segundo dígito 1: 2² y así sucesivamente. Agregue los valores, y el número antes de la coma le da el número 18.3999996185302734375.
En el siguiente consejo práctico le mostraremos cómo puede convertir letras ASCII en números binarios.