我正在尝试将 IEEE 754 32 位单精度浮点值(标准 c 浮点变量)转换为MIL-STD-1750A格式的无符号长变量。我在帖子底部包含了 IEEE 754 和 MIL-STD-1750A 的规范。现在,我的代码在转换指数时遇到问题。我也看到了转换尾数的问题,但我还没有解决这些问题。我正在使用上面链接中表 3 中列出的示例来确认我的程序是否正确转换。其中一些例子对我来说没有意义。
这两个例子怎么会有相同的指数呢?
.5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0000) -1 x 2^0 (1000 0000 0000 0000 0000 0000 0000 0000)
.5 x 2^0 有一位小数,-1 没有小数位,所以 .5 x 2^0 的值应该是
.5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0010)
对?(0010 代替 0001,因为 1750A 使用加 1 偏置)
最后一个例子怎么能使用全部 32 位,第一位为 1,表示负值呢?
0.7500001x2^4 (1001 1111 1111 1111 1111 1111 0000 0100)
我可以看到指数为 127 的值应该是 7F(0111 1111),但是指数为负的 127 的值呢?会是 81(1000 0001)吗?如果是这样,是因为那是 127 的二进制补码 +1 吗?
谢谢