Set*_*eth 3 c++ floating-point ieee-754
我正在尝试将基于 IEEE 的浮点数转换为 MIL-STD 1750A 浮点数。
我已附上两者的规格:
我了解如何按照维基百科上的示例分解 IEEE 格式的浮点 12.375 。
但是,我不确定我对 MIL-STD 的解释是否正确。
12.375 = (12)b10 + (0.375)b10 = (1100)b2 + (0.011)b2 = (1100.011)b2 (1100.011)b2 = 0.1100011 x 2^4 => 指数,E = 4。
4 标准化 2 的补码 = (100)b2 = 指数
因此,MIL-STD 1750A 32 位浮点数为:
S=0, F=11000110000000000000000, E=00000100
Run Code Online (Sandbox Code Playgroud)
我的上述解释正确吗?
对于-12.375,只是交换符号位吗?IE:
S=1, F=11000110000000000000000, E=00000100
Run Code Online (Sandbox Code Playgroud)
或者小数部分会发生什么奇怪的事情吗?
我认为上图有点误导。在 IEEE 格式中,要从正值切换到负值,只需翻转第一位即可。剩下的三位可以被视为无符号数。在 MIL-STD 格式中,尾数是二进制补码数,因此虽然第一位确实指示符号,但其余 23 位不会保持不变。
我得到的是
S=1, F=00111010000000000000000, E=00000100
Run Code Online (Sandbox Code Playgroud)