Command Palette

Search for a command to run...

Convertidor IEEE 754: vea cómo se almacenan realmente los flotadores

Convertidor IEEE 754: vea cómo se almacenan realmente los flotadores

T
Toolz Team
|Aug 23, 2026|16 Min Lectura

Parte de la colección Binario y hexagonal

La primera vez a 0.1 + 0.2 === 0.3 bug me mordió en producción, hice lo que hacen la mayoría de los desarrolladores: busqué, encontré " el punto flotante es extraño," y seguí adelante. Pasaron años antes de que realmente mirara los bits y entendiera por qué. Una vez que lo hice, toda una categoría de errores numéricos dejó de ser misteriosa. Esta guía analiza lo que le muestra un convertidor IEEE 754, utilizando el Convertidor IEEE 754 en Toolz.dev, y por qué mirar el signo, el exponente y la mantisa es la forma más rápida de generar una intuición real sobre cómo las computadoras almacenan decimales.

TL;Dr: Las computadoras almacenan números de punto flotante como un signo, una potencia de dos y un significado fraccionario, siguiendo el estándar IEEE 754. Un convertidor IEEE 754 codifica un decimal como 3.14159 en esos bits exactos y decodifica los bits nuevamente a un valor. El Convertidor IEEE 754 hace ambas cosas, para precisión simple y doble, completamente en su navegador, con el signo, el exponente y la mantisa desplegados.

¿qué es IEEE 754?

IEEE 754 es el estándar, publicado por primera vez en 1985 y revisado como IEEE 754-2019, eso define cómo las computadoras representan números de punto flotante en binario. Casi todos los lenguajes de programación, GPU y CPU lo siguen, razón por la cual a double se comporta igual en C, Java, Python y JavaScript. Cuando la gente dice " punto flotante, " casi siempre se refieren al punto flotante binario IEEE 754.

La idea central es que un número se almacena en tres partes. Hay un bit de signo que dice positivo o negativo. Hay un exponente que escala el valor en una potencia de dos. Y hay una mantisa, también llamada fracción o significado, que contiene los dígitos precisos. En conjunto, un número normal es signo multiplicado por 1.mantisa multiplicado por 2 elevado al exponente. Es notación científica, en base dos, empaquetada en un número fijo de bits.

Los dos formatos que conoces diariamente son precisión simple, llamada binaria32, y precisión doble, llamada binaria64. Single utiliza 1 bit de signo, 8 bits exponentes y 23 bits de mantisa, para un total de 32 bits. Double utiliza 1 bit de signo, 11 bits exponentes y 52 bits de mantisa, para un total de 64 bits. Double es el tipo de punto flotante predeterminado en la mayoría de los idiomas; single es común en GPU y en código sensible a la memoria.

¿qué hace realmente un convertidor IEEE 754?

Un convertidor IEEE 754 toma un número y le muestra su patrón de bits exacto, dividido en esos tres campos, junto con la forma hexadecimal y el valor leído de los bits. Funciona en ambos sentidos: ingrese un decimal para codificarlo o pegue un patrón de bits binario o hexadecimal para decodificarlo nuevamente en el número que representa.

En Toolz.dev el flujo de trabajo es corto. Elija precisión simple o doble. Elija si su entrada es un número decimal, un patrón de bits hexadecimales o un patrón de bits binarios. Ingrese el valor. La herramienta muestra el bit de signo, el campo exponente, la mantisa, los bits completos, el hexadecimal, tanto el exponente sesgado como el insesgado y el valor almacenado exacto. Cada campo tiene un botón de copia.

La razón para mirar todo esto, en lugar de confiar en el número que imprime su idioma, es que el número impreso radica en omisión. Cuando se muestra tu consola 0.1, te muestra una representación redondeada y amigable. Los bits le indican lo que realmente se almacena y la diferencia entre esos dos es dónde viven los errores de punto flotante.

¿por qué 0,1 más 0,2 no es igual a 0,3?

Este es el ejemplo canónico y el convertidor lo hace concreto. El valor 0,1 no se puede representar exactamente en punto flotante binario, por la misma razón 1/3 no se puede escribir exactamente en decimal. En base diez, 1/3 es 0,3333... para siempre. En base dos, 0,1 es una fracción repetida que nunca termina, por lo que debe redondearse para caber en 52 bits de mantisa.

Decodifique el doble para 0,1 y el valor que realmente contienen los bits es 0,1000000000000055511151231257827021181583404541015625. El doble para 0,2 es igualmente demasiado grande. Agregue los dos valores redondeados y el resultado es un poquito más que 0,3, pero el doble para 0,3 es un poquito menos, por lo que los dos no son iguales. Nada está roto. Cada paso hace exactamente lo que requiere IEEE 754, y el convertidor le permite verlo suceder en lugar de tomarlo por fe.

Una vez que haya visto esto, la solución sigue naturalmente: nunca compare flotadores para lograr una igualdad exacta. Compare dentro de una pequeña tolerancia, o use centavos enteros por dinero, o una biblioteca decimal cuando necesite aritmética decimal exacta. El error nunca estuvo en la suma. Esperaba que un formato binario almacenara fracciones decimales exactamente.

¿cuáles son el signo, el exponente y la mantisa?

Cada campo tiene un trabajo específico y el convertidor etiqueta los tres.

El bit de signo es el más simple: 0 significa positivo, 1 significa negativo. Debido a que el signo es un bit separado, IEEE 754 tiene un cero tanto positivo como negativo, que se comportan por igual en comparaciones pero transportan bits diferentes.

El campo exponente almacena una potencia de dos, pero con un sesgo agregado para que pueda representar exponentes negativos sin un signo separado. El sesgo es 127 para precisión simple y 1023 para doble. Entonces, un campo exponente almacenado de 127 en precisión simple significa un exponente real de cero. El convertidor Toolz.dev muestra ambos números: el valor sesgado que vive en los bits y la potencia imparcial de dos que realmente aplica. Esa distinción hace tropezar a mucha gente, razón por la cual la herramienta lo explica en lugar de hacerte restar en tu cabeza.

La mantisa contiene la parte fraccionaria del significado. Para un número normal hay un 1 inicial implícito que no se almacena, porque un significado binario normalizado siempre comienza con 1, por lo que el formato obtiene un poco de precisión al omitirlo. Es por eso que la precisión simple da alrededor de 7 dígitos decimales y la doble da alrededor de 15 a 16, aunque los campos de mantisa son de 23 y 52 bits.

Así es como los dos formatos se alinean campo por campo:

Propiedad Soltero (binario32) Doble (binario64)
Bits totales 32 64
Firmar bits 1 1
Bits exponentes 8 11
Trozos de mantisa 23 52
Sesgo exponencial 127 1023
Aprox. dígitos decimales 7 15 până la 16
Nombre común flotar doble

¿cómo convierto bits a un número decimal?

La decodificación es tan útil como la codificación, y es como se lee un valor de un volcado de memoria, un formato de archivo binario o un protocolo de red que almacena flotadores sin procesar. Establezca el tipo de entrada en hexadecimal o binario y pegue el patrón de bits exacto que espera la precisión: 8 dígitos hexadecimales o 32 bits para uno, 16 dígitos hexadecimales o 64 bits para el doble.

Por ejemplo, el hexágono de precisión simple 40490FDB decodifica a 3.1415927, el flotador más cercano a pi. El convertidor también acepta una opción 0x prefija e ignora espacios y guiones bajos, para que pueda pegar bytes agrupados a medida que los encuentre. Si le da el número incorrecto de dígitos, le indica exactamente cuántos necesita esa precisión en lugar de truncarlos silenciosamente, que es el tipo de mensaje de error que deseo que escriban más herramientas.

Esta dirección de decodificación se empareja naturalmente con una general Convertidor de base de números cuando necesitas mover un valor entre decimal, hexadecimal, binario y octal sin la interpretación del punto flotante, y con el traductor binario cuando trabajas con texto en lugar de números. Llego a los tres con suficiente frecuencia como para que vivan en el mismo rincón de mis marcadores.

¿cómo se representan el infinito, NaN y cero?

Los valores especiales son donde IEEE 754 se vuelve inteligente y el convertidor identifica cada caso por usted para que no tenga que memorizar los patrones.

El campo exponente actúa como un interruptor. Cuando cada bit exponente es 1, estás en el rango especial: una mantisa totalmente cero significa infinito, y cualquier mantisa distinta de cero significa NaN, no un número. El infinito positivo y negativo difieren sólo por el bit de signo. NaN es lo que se obtiene de operaciones como cero dividido por cero o la raíz cuadrada de un negativo, y tiene la famosa propiedad de que no es igual a sí mismo.

Cuando cada bit exponente es 0, estás en el otro rango especial: una mantisa totalmente cero es cero, positiva o negativa dependiendo del bit de signo, y una mantisa distinta de cero es un número subnormal. Los subnormales llenan el vacío entre cero y el número normal más pequeño, intercambiando precisión por la capacidad de representar magnitudes muy pequeñas. Utilizan un exponente efectivo de uno menos el sesgo y eliminan el 1 inicial implícito, que el convertidor tiene en cuenta cuando muestra el exponente imparcial.

Todo lo demás, donde el campo exponente no es ni todos los ceros ni todos los unos, es un número normal. Poder observar un patrón de bits y saber instantáneamente cuál de estos cinco casos está viendo es una superpotencia de depuración genuina cuando un cálculo produce un valor que no esperaba.

¿Cuándo necesito esto realmente?

Lo necesitas con más frecuencia de lo que adivinarías una vez que sabes mirar. Lo busco cuando un resultado numérico está desviado por un error de redondeo y quiero confirmar si el valor es exactamente representable. Lo uso al escribir o depurar un serializador binario, un formato de archivo o un protocolo de cable que almacena flotadores, para poder verificar que los bytes coincidan con lo que pretendía. Es indispensable al comparar precisión simple y doble, por ejemplo, decidir si un sombreador de GPU puede usarse float sin perder demasiada precisión. Y es uno de los materiales didácticos más claros que conozco para la arquitectura informática, porque ver los campos hace tangible el estándar abstracto.

Si construyes en toda la pila como lo hago yo, el punto flotante aparece en lugares sorprendentes: un cálculo de precio en una API de Laravel, una animación de lienzo en React, una exportación CSV que destruye una coordenada. Comprender el formato de almacenamiento es una pequeña inversión que vale la pena en todos ellos. Escribí sobre cómo herramientas como esta encajan en un kit más amplio en el Kit de herramientas para desarrolladores web, y el guía del convertidor base numérica y guía de traducción binaria cubra las conversiones vecinas de bajo nivel con más profundidad.

¿Cuáles son los límites de la precisión del punto flotante?

Una vez que puedas ver los bits, los límites del formato dejan de ser abstractos. Un doble tiene 52 bits de mantisa almacenados más el 1 inicial implícito, lo que equivale aproximadamente a entre 15 y 16 dígitos decimales significativos. Push más allá de eso y la precisión se evapora silenciosamente. El número entero más grande que un doble puede representar con cada valor intermedio aún exacto es 2 elevado a la potencia 53, que es 9007199254740992. Agregue uno a eso y el resultado se redondeará hacia abajo, porque el siguiente valor representable está a dos de distancia, no a uno. Es por eso que los lenguajes que usan dobles para todos los números, entre ellos JavaScript, exponen a Number.MAX_SAFE_INTEGER constante exactamente en ese valor y por qué los ID de bases de datos grandes enviados como números JSON pueden corromperse silenciosamente.

La brecha entre un valor representable y el siguiente se llama unidad en último lugar, o ULP, y crece a medida que crece la magnitud. Cerca de 1,0 la brecha es pequeña; cerca de mil millones son unos pocos cientos; cerca del doble máximo, alrededor de 1,8 veces 10 elevado a 308, la brecha entre vecinos es astronómicamente grande. El convertidor hace esto visible: codifica dos números grandes cercanos y a menudo encontrarás que comparten los mismos bits, porque simplemente no hay representación entre ellos. Comprender ULP es lo que te impide esperar más resolución de la que el formato puede dar.

Una trampa relacionada es la cancelación catastrófica. Cuando restas dos números de punto flotante casi iguales, los dígitos iniciales se cancelan y te quedan los bits de orden inferior, que para empezar eran la parte menos precisa. El resultado puede estar dominado por un error de redondeo aunque cada entrada parezca precisa. Es por eso que operaciones de reordenamiento de código numéricamente cuidadosas para evitar restar cantidades cercanas, y por qué la suma de una larga lista de flotadores en un bucle ingenuo acumula errores que mejores algoritmos como la suma de Kahan evitan.

Las conclusiones prácticas son consistentes. No almacene dinero como flotador; utilice centavos enteros o un tipo decimal, porque un valor como 0,10 no es exactamente representable y los errores se agravan en miles de transacciones. No compare flotadores con igualdad exacta; compárelo dentro de una tolerancia dimensionada según su problema. Y cuando un número entero muy grande debe sobrevivir a un viaje de ida y vuelta, guárdelo como una cadena o use un tipo entero de precisión arbitraria en lugar de confiar en un doble para sostenerlo. Cada una de estas reglas es más fácil de recordar una vez que el conversor le ha mostrado por qué el formato se comporta como lo hace.

Preguntas frecuentes

¿cómo convierto un número decimal a IEEE 754?

Elija precisión simple o doble, mantenga el tipo de entrada en decimal, escriba su número y convierta. La herramienta codifica el valor en su patrón de bits IEEE 754 y muestra el bit de signo, el campo exponente, la mantisa, el binario completo y el hexadecimal. Todo se ejecuta en su navegador.

¿Cuál es la diferencia entre precisión simple y doble?

La precisión simple (binary32) utiliza 32 bits: 1 signo, 8 exponentes y 23 mantisas, lo que da aproximadamente 7 dígitos decimales de precisión. La doble precisión (binary64) utiliza 64 bits: 1 signo, 11 exponente y 52 mantissa, lo que da entre 15 y 16 dígitos. El doble es el tipo flotante predeterminado en la mayoría de los idiomas; El sencillo es común en las GPU y en el código con memoria restringida.

¿por qué 0,1 no se convierte a un valor exacto?

0,1 no tiene representación finita en punto flotante binario, al igual que 1/3 no tiene decimal finito. El doble representable más cercano es 0.1000000000000055511151231257827021181583404541015625. El convertidor muestra el valor almacenado leído de los bits, por lo que puede ver la pequeña diferencia que causa sorpresas de redondeo como 0,1 + 0,2 que no es igual a 0,3.

¿cuáles son el signo, el exponente y la mantisa?

El bit de signo es 0 para positivo y 1 para negativo. El campo exponente almacena una potencia de dos con un sesgo agregado (127 para simple, 1023 para doble), razón por la cual la herramienta muestra tanto el valor sesgado en los bits como la potencia insesgada que aplica. La mantisa contiene la parte fraccionaria del significado, con un 1 inicial implícito para números normales.

¿puedo convertir IEEE 754 bits a un número decimal?

Sí. Establezca el tipo de entrada en hexadecimal o binario y pegue el patrón de bits exacto: 8 dígitos hexadecimales o 32 bits para precisión simple, 16 dígitos hexadecimales o 64 bits para doble. La herramienta lo decodifica y muestra el valor decimal que representa junto con el desglose completo del campo.

¿cómo se representan el infinito, NaN y cero?

Cuando cada bit exponente es 1, una mantisa totalmente cero significa infinito y una mantisa distinta de cero significa NaN. Cuando cada bit exponente es 0, una mantisa totalmente cero es cero (positiva o negativa dependiendo del bit de signo) y una mantisa distinta de cero es un número subnormal. El convertidor etiqueta cada uno de estos casos por usted.

¿Es seguro utilizar esta herramienta para números sensibles?

Sí. La conversión se ejecuta completamente en JavaScript en su navegador. Ninguna solicitud de red transporta su entrada, no se almacena nada y la herramienta funciona sin conexión una vez que la página se ha cargado, por lo que cualquier valor que ingrese permanece en su dispositivo.

¿qué formato hexadecimal espera el convertidor?

Dígitos hexadecimales simples, con prefijo 0x opcional y espacios o guiones bajos para agrupar, que se ignoran. La precisión simple espera 8 dígitos hexadecimales y la precisión doble espera 16. Por ejemplo, 40490FDB es pi de precisión simple (3.1415927).


Explora las partes tú mismo con el gratis Convertidor IEEE 754. Codifica y decodifica flotadores de precisión simple y doble completamente en su navegador, sin cargar nada.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!