【问题标题】:Are there any 32bit floating point representations besides the IEEE754除了 IEEE754 之外,是否还有任何 32 位浮点表示
【发布时间】:2018-11-03 15:18:24
【问题描述】:

前言:

我目前正在尝试解密一种旧的二进制格式(在 1980 年代中后期在日本开发),它将浮点值存储在 4 字节块中,未使用 IEEE754 标准进行转换。我有一个程序可以为我转换值,因此我可以操作二进制文件来更改存储的值并查看结果,但我不知道如何解释它们。

我确实将 4 个字节的所有可能排列解释为 IEEE 浮点数,但没有一个是正确的,所以我可以说这不是字节序问题,也不是我知道或可以在互联网上找到的浮点数表示.

我试图研究我使用的程序的汇编,但我的汇编技能不足以从中得到任何东西。

这里有一些例子:

  • A0 78 2D 00 = 298。
  • A0 78 2D 01 = 1975.7
  • A0 78 2D 02 = 3653.4
  • A0 78 2C 00 = 291.4
  • A0 78 2C 02 = 3646.8

实际问题:

除了/在 IEEE754 标准之前/之前,还有其他(旧的)32 位浮点表示吗?

【问题讨论】:

标签: floating-point binaryfiles binary-data data-conversion ieee-754


【解决方案1】:

它不是浮点表示,而是定点表示。二进制 4 字节块是 little endian 32 位整数,表示 浮点 值乘以 10000:

Byte repr.   int hexa   int dec. int val / 10000.
A0 78 2D 00  0x002d78a0  2980000 298.0
A0 78 2D 01  0x012d78a0 19757216 1975.7216
A0 78 2D 02  0x022d78a0 36534432 3653.4432
A0 78 2C 00  0x002c78a0  2914464 291.4464
A0 78 2C 02  0x022c78a0 36468896 3646.8896

这通常用于在精度固定和需要精确运算时表示十进制数,例如表示货币

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多