floating-point - 除了 IEEE 754 之外是否还有任何 32 位浮点表示

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

前言:

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

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

我已经尝试研究我使用的程序的汇编,但我的汇编技能还不够好,无法从中得到任何东西。

这里有一些例子:

  • 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

实际问题:

是否有任何其他(旧的)32 位浮点表示在 IEEE754 标准之外/之前使用过?

最佳答案

它不是浮点表示,而是定点表示。二进制 4 字节 block 是小端 32 位整数,表示乘以 10000 的 float 值:

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

这通常用于在精度固定时表示小数以及当您需要精确操作时,例如表示货币

关于floating-point - 除了 IEEE 754 之外是否还有任何 32 位浮点表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50508607/

相关文章:

floating-point - 负零的平方根

python - 从 python 启动多个二进制文件并监视它们的状态

python - 如何分块循环遍历 Python 中的二进制文件

binary - 计算机如何将所有内容转换为二进制?当他们看到一个二进制代码时,他们如何知道它代表的是数字还是单词或指令?

Java float to double - 上限和下限?

c++ - 我试图将 float 四舍五入到小数点后两位,但这是不正确的。如何在 C++ 中修复此舍入错误?

c - 单精度 float 在零附近时的近似分辨率是多少

Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

c - 可执行文件中的符号是什么?

c - 如何将 STDIN 流更改为二进制