AZ Tools

Conversor IEEE 754 (32 y 64 bits)

Convertir

Los números de punto flotante se guardan como un bit de signo, un exponente sesgado y una fracción (mantisa), y la diferencia entre lo que escribes y lo que realmente se almacena es la causa de incontables errores de redondeo. Este conversor muestra la representación IEEE 754 exacta de cualquier número decimal en float32 (simple, 1+8+23 bits, sesgo 127) y float64 (doble, 1+11+52 bits, sesgo 1023): la cadena de bits con colores, la palabra hex, el exponente sin sesgo y la mantisa, la categoría del valor (normal, subnormal, cero, infinito, NaN) y el valor realmente almacenado tras el redondeo. También funciona al revés — pega una palabra hex de 8 o 16 dígitos y obtén el número decodificado y su desglose completo. Útil para depurar serialización, shaders y código embebido, búferes de GPU y preguntas del tipo «¿por qué 0.1 + 0.2 != 0.3?». Se aceptan las entradas especiales Infinity, -Infinity y NaN. Todo corre localmente; no se sube nada.

float32 (single)normal
00111101110011001100110011001101
0x3dcccccd
Signo
0 (+)
Exponente
123 (2^-4)
Mantisa
1.10011001100110011001101
Almacenado
0.10000000149011612

Redondeado — float32 no puede almacenar este valor exactamente.

float64 (double)normal
0011111110111001100110011001100110011001100110011001100110011010
0x3fb999999999999a
Signo
0 (+)
Exponente
1019 (2^-4)
Mantisa
1.1001100110011001100110011001100110011001100110011010
Almacenado
0.1
signo exponente fracción

float32 = 1 signo + 8 exponente + 23 fracción bits; float64 = 1 + 11 + 52. El sesgo del exponente es 127 / 1023.

Cómo usar

  1. Mantén 'Decimal → bits' y escribe un número (p. ej. 0.1, -3.14, 1e10, Infinity, NaN) para ver float32 y float64.
  2. Lee la división signo / exponente / mantisa, la palabra hex y el valor almacenado; una nota avisa cuando float32 tuvo que redondear.
  3. Cambia a 'Bits → decimal', elige la precisión y pega una palabra hex para decodificarla a un número.

Preguntas frecuentes

¿Por qué el valor almacenado difiere de lo que escribí?
La mayoría de las fracciones decimales no se pueden representar exactamente en punto flotante binario. La herramienta muestra el valor representable más cercano — p. ej. 0.1 en float32 es en realidad 0.100000001490116119384765625. Aparece una nota de redondeo cuando el valor float32 almacenado difiere de tu entrada; float64 almacena el mismo valor que JavaScript ya usa.
¿Qué significan los bits de colores?
Rojo es el bit de signo (0 positivo, 1 negativo), azul es el exponente (sesgado: resta 127 para float32 o 1023 para float64 para obtener la potencia de dos) y verde es la fracción/mantisa. Para números normales la mantisa es 1.fracción; para subnormales es 0.fracción con el exponente mínimo.
¿Cómo se muestran infinito, NaN y cero?
Un exponente todo unos con fracción cero es ±infinito; un exponente todo unos con fracción no nula es NaN; exponente y fracción todo ceros es ±cero (nota el bit de signo distintivo de -0); y un exponente todo ceros con fracción no nula es un número subnormal. La categoría se etiqueta en cada tarjeta.
¿Qué formato hex espera la decodificación?
El hex big-endian de los bits crudos: 8 dígitos hex para float32 (p. ej. 3f800000 = 1.0) y 16 para float64 (p. ej. 3ff0000000000000 = 1.0). Un 0x inicial y los espacios se ignoran, y la entrada más corta se rellena con ceros a la izquierda.

Herramientas relacionadas