Conversor de números IEEE 754

Convierta un número decimal a su representación hexadecimal IEEE 754 de 32 o 64 bits, o recupere el valor de sus bits; consulte los registros Modbus en cuatro disposiciones mostradas.

¿Tiene un número que transmitir? Conviértalo aquí. Para decodificar los registros que devuelve un equipo, use el decodificador de registros Modbus.

Modbus y comunicaciones serie Actualizado Gratis, sin registro

Coma flotante de 32 bits

230.5decimal
4366 8000almacenado como precisión simple de 32 bits
01000011

A 43

01100110

B 66

10000000

C 80

00000000

D 00

  • Signo, 1 bit
  • Exponente, 8 bits
  • Fracción, 23 bits

+1.f =1,80078125×27=230,5

Signo
0, positivo
Exponente
134 − 127 = 7
Fracción
0x668000

Almacenado exactamente.

La distancia hasta el siguiente número de coma flotante de 32 bits en este punto es 1,526 × 10⁻⁵.

Valores de ejemplo
¿Qué conversión desea realizar?
Conversión
Precisión
Valor

Por ejemplo, 230.5, -12 o 1.5e-3

Ocho dígitos para 32 bits y dieciséis para 64 bits; se admiten espacios

precisión simple de 32 bits en hexadecimal

0x43668000

precisión simple de 32 bits.

Valor realmente almacenado
230,5
Bit de signo
0 (positivo)
Exponente
134 − 127 = 7
Fracción, 23 bits
0x668000
Clase
Número normal
Registros Modbus, ABCD (big-endian)
4366 8000
Registros Modbus, CDAB (palabras intercambiadas)
8000 4366
Registros Modbus, BADC (bytes intercambiados)
6643 0080
Registros Modbus, DCBA (little-endian)
0080 6643
Cómo se calcula
  1. x = (−1)^s × 1.f × 2^(e − 127)=(−1)⁰ × 1,80078125 × 2⁷=230,5

230,5 como número de coma flotante IEEE 754 de precisión simple de 32 bits es 0x43668000.

Consejo: Un valor plausible con un orden de palabras es una pista, no una prueba. Confirme el orden de bytes y palabras con el mapa de registros del equipo o una prueba controlada con un valor conocido. Los registros 4120 0000 representan 10 en orden ABCD, pero aproximadamente 2,3e-41 en orden CDAB.

Cómo convertir un flotante a hexadecimal y viceversa

Un número de coma flotante IEEE 754 de precisión simple ocupa 32 bits: 1 bit de signo, 8 de exponente y 23 de fracción. El valor 230,5 se representa como 0x43668000. Los contadores de energía, analizadores de potencia y autómatas usan este formato para valores como tensión, potencia o frecuencia y los transmiten por Modbus en dos registros de 16 bits.

Los registros que devuelve un equipo contienen los bits sin interpretar. Leerlos como enteros produce un valor incorrecto: hay que decodificarlos como número flotante con el orden de palabras adecuado.

Valor de un flotante almacenado

x = (−1)s × 1.f × 2e − 127

s es el bit de signo, e el campo de exponente de 8 bits y f los 23 bits de fracción interpretados como fracción binaria. El 1 inicial es implícito y no se almacena. En precisión doble de 64 bits, el exponente ocupa 11 bits con un sesgo de 1023 y la fracción ocupa 52 bits.

De decimal a hexadecimal

Para un valor normal, hallar s, e y f de modo que (−1)s × 1.f × 2e − 127 sea lo más próximo a x

La mayoría de decimales no tienen una representación binaria exacta: el flotante almacena el valor más próximo. El valor 0,1 se convierte en 0,100000001490116, codificado como 0x3DCCCCCD. La calculadora muestra el valor almacenado y el error de redondeo.

Valores especiales

e = 0: cero o subnormal; e = 255: infinito o NaN

Un campo de exponente todo a cero codifica cero o números subnormales inferiores a 1,18 × 10−38. Un campo todo a uno codifica infinito si la fracción es cero; en caso contrario, NaN («no es un número»). Muchos contadores devuelven NaN, a menudo 0x7FC00000, cuando una medición no está disponible.

Modbus solo define registros de 16 bits, transmitidos con el byte más significativo primero; por ello, un flotante de 32 bits ocupa dos. La norma no especifica qué registro va primero. Muchos equipos envían primero la palabra más significativa (ABCD), otros la menos significativa (CDAB), y algunos invierten también los bytes de cada registro (BADC, DCBA). Confirme el orden con el mapa de registros del equipo o con una prueba controlada de un valor conocido. Un valor meramente plausible no lo demuestra.

Ejemplos de números IEEE 754

Una frecuencia de 50 Hz

50 = 1,5625 × 25: el bit de signo vale 0, el campo de exponente vale 5 + 127 = 132 y la fracción representa 0,5625. El resultado es 0x42480000, transmitido por Modbus en los registros 4248 0000 en orden ABCD.

precisión simple de 32 bits en hexadecimal 0x42480000 Abrir en la calculadora

Los mismos registros en el orden incorrecto

Si un contador envía primero la palabra menos significativa y el software lee primero la más significativa, 50 Hz llega como 0000 4248. Interpretada en orden ABCD, esta secuencia vale 2,3777e‑41: un número subnormal cercano a cero. Un valor diminuto, enorme o NaN cuando se espera una medición normal puede indicar un orden de palabras erróneo.

Valor decimal 2,3777e-41 Abrir en la calculadora

Por qué 0,1 no es exactamente 0,1

En binario, 0,1 es periódico, como 1/3 en decimal. El flotante de 32 bits más próximo vale 0,100000001490116, codificado como 0x3DCCCCCD. El error es de aproximadamente 1,5 × 10−9, muy inferior a la precisión de un contador, pero explica por qué puede fallar una comparación de igualdad exacta con 0,1.

precisión simple de 32 bits en hexadecimal 0x3DCCCCCD Abrir en la calculadora

Valores habituales: flotante y hexadecimal

Patrones de bits IEEE 754 presentes en registros de contadores, en orden ABCD.

Decimal32 bits64 bits
00x000000000x0000000000000000
10x3F8000000x3FF0000000000000
−10xBF8000000xBFF0000000000000
0.50x3F0000000x3FE0000000000000
0.10x3DCCCCCD0x3FB999999999999A
20x400000000x4000000000000000
100x412000000x4024000000000000
500x424800000x4049000000000000
600x427000000x404E000000000000
1000x42C800000x4059000000000000
2300x436600000x406CC00000000000
4000x43C800000x4079000000000000
10000x447A00000x408F400000000000
3.141590x40490FD00x400921F9F01B866E

Descargar esta tabla (CSV)

Preguntas sobre números de coma flotante IEEE 754

¿Cuántas cifras significativas tiene un flotante de 32 bits?

Aproximadamente siete cifras decimales significativas. Por encima de 16.777.216 (224), ya no se pueden representar todos los enteros. Por ello, un total de energía en kWh almacenado como flotante de 32 bits deja de avanzar en incrementos de una unidad después de unos 16,8 millones. Los contadores con totales elevados suelen usar flotantes de 64 bits o enteros.

¿Qué significan ABCD, CDAB, BADC y DCBA?

Son cuatro disposiciones habituales de bytes para un valor de 32 bits repartido entre dos registros. A es el byte más significativo. ABCD transmite primero el registro más significativo, con el byte más significativo primero dentro de cada registro, como hace Modbus. CDAB invierte los dos registros; BADC invierte los bytes dentro de cada uno; DCBA hace ambas cosas. Confirme la disposición real en el mapa de registros del equipo.

¿Coinciden los dígitos hexadecimales con lo que transmite el contador?

En orden ABCD, sí: los cuatro bytes hexadecimales aparecen en ese orden en la transmisión. Para los demás órdenes, use las palabras de registro que indica la calculadora. El decodificador de registros Modbus parte de los registros y muestra todos los órdenes.

¿Por qué devuelve NaN un contador?

NaN es un valor IEEE que no representa un número, no un cero. Un contador puede usarlo para una lectura no disponible, producirlo tras un cálculo inválido o parecer que lo devuelve si se decodifican los registros en un orden incorrecto. Consulte el mapa de registros y el estado del equipo para determinar la causa. No lo registre como cero.

Límites de este resultado

  • Modbus solo define registros de 16 bits. La disposición de un número flotante entre registros depende del mapa del fabricante, no del protocolo. Las cuatro disposiciones mostradas no abarcan todas las posibilidades, especialmente para valores de 64 bits.
  • NaN admite varios patrones de bits; esta herramienta muestra el patrón introducido o el valor predeterminado de la plataforma.
  • Una entrada decimal se interpreta primero como número de 64 bits; por tanto, se pierden los dígitos que excedan aproximadamente 17 cifras significativas.

Medir de forma continua

Edge lee contadores Modbus por TCP y RTU y decodifica cada registro según el tipo y el orden de palabras definidos en el modelo del equipo. Un ZMB conecta de forma inalámbrica un contador RS-485 con el Gateway.

Guías relacionadas

Fuentes

  1. IEEE Standard for Floating-Point Arithmetic (IEEE 754-2019) (se abre en una nueva pestaña) IEEE, 2019-07-22
  2. MODBUS Application Protocol Specification (se abre en una nueva pestaña) (PDF) Modbus Organization, V1.1b3, 2012-04-26