除了 IEEE 754 之外是否还有任何 32 位浮点表示
Are there any 32bit floating point representations besides the IEEE754
前言:
我目前正在尝试解密一种旧的二进制格式(在 1980 年代中后期在日本开发),该格式将浮点值存储在 4 字节块中,不使用 IEEE754 标准进行转换。我有一个程序可以为我转换值,因此我可以操纵二进制文件来更改存储的值并查看结果,但我不知道如何解释它们。
我确实将 4 个字节的所有可能排列解释为 IEEE 浮点数,但其中 none 是正确的,所以我可以说这不是字节序问题,也不是我知道的浮点数表示或者可以在互联网上找到。
我已经尝试研究我使用的程序的汇编,但我的汇编技术还不够好,无法从中得到任何东西。
这里有一些例子:
- 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
实际问题:
是否有任何其他are/where 使用besides/before IEEE754 标准的(旧的)32 位浮点表示?
它不是浮点表示,而是定点表示。二进制 4 字节块是小端 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
这通常用于在精度固定且需要精确运算时表示小数,例如表示货币
前言:
我目前正在尝试解密一种旧的二进制格式(在 1980 年代中后期在日本开发),该格式将浮点值存储在 4 字节块中,不使用 IEEE754 标准进行转换。我有一个程序可以为我转换值,因此我可以操纵二进制文件来更改存储的值并查看结果,但我不知道如何解释它们。
我确实将 4 个字节的所有可能排列解释为 IEEE 浮点数,但其中 none 是正确的,所以我可以说这不是字节序问题,也不是我知道的浮点数表示或者可以在互联网上找到。
我已经尝试研究我使用的程序的汇编,但我的汇编技术还不够好,无法从中得到任何东西。
这里有一些例子:
- 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
实际问题:
是否有任何其他are/where 使用besides/before IEEE754 标准的(旧的)32 位浮点表示?
它不是浮点表示,而是定点表示。二进制 4 字节块是小端 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
这通常用于在精度固定且需要精确运算时表示小数,例如表示货币