我试过,这是我到目前为止所得到的:
10111.100 = 1.0111100 x 2 ^ 100
为尾数提供10111100,为指数提供00000100,但我想我可能错了。
答案 0 :(得分:1)
23.5与47 x 2 ^ -1相同。 47是二进制00101111.现在简单地向右移动(并相应地递增指数),直到得到1.0111100和指数4(二进制00000100)。我假设你对指数(可能是128)有某种偏见来迎合负指数,所以加上它。
换句话说
23.5 = 47 * 2^-1 --> 00101111. exp -1
0010111.1 exp 0
001011.11 exp 1
00101.111 exp 2
0010.1111 exp 3
001.01111 exp 4 --> m=00101111 e=00000100
但通常情况下,将此值标准化以将最高位设置为1:
1.01111000 exp 4.
指数得到偏差,所以负值变为正值,比如128.加4,你得到:
e=10000100
顶部尾数(a.k.a.有效数字)位始终为1,因此可以将其丢弃,所以现在你有:
m=01111000 e=10000100
这就是我存储这样一个16位浮动二进制点值的方法。