如何将23.5转换为二进制,使用1个字节作为尾数,1个字节作为指数

时间:2014-06-10 02:47:57

标签: floating-point binary

我试过,这是我到目前为止所得到的:

10111.100 = 1.0111100 x 2 ^ 100

为尾数提供10111100,为指数提供00000100,但我想我可能错了。

1 个答案:

答案 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位浮动二进制点值的方法。