1

0.03125使用 8 位机器以标准化浮点形式表达;1 位符号,3 位指数,4 位尾数。

指数以excess-3格式存储,尾数调整为小数点前一位。

哦对不起!这是我在 stackoverflow 上的第一篇文章,我不习惯这种网站。我的答案是 0 100 0001,我不知道它是否正确。我认为符号是 0,因为有一个正值,而 100 是指数,对于尾数,我尝试将其作为 0.03125*2 等等,所以我得到 00001 的值和尾数的 4 位所以答案是 0001。希望我已经清楚地解释了我做这个问题的方式,因为我的英语很糟糕。谢谢大家纠正我的提问方式。

4

1 回答 1

1

“excess-3”指数格式(预期为 3 位指数)给出的偏差2^(k - 1) - 1(3)用于(k = 3)指数位。

这表明您可以表示范围内的指数:{-3, 4}. 也就是说,给定 3 位指数(E)模式:{000, 001, .., 111} = {0, 7}(e)通过减去偏差找到指数。正如E = 0暗示的那样,情况并非如此e = 1 - bias为次正规表示保留的特殊值。

用于E表示指数的存储位,并e表示E - bias,我们不断乘以(0.03125)2 直到我们有一个前导二进制1.xxxx形式,其中该前导1.隐含在归一化浮点数中。在这种情况下,给出的值(方便地)是(2)的幂:0.03125 = 1/32 = 2^(-5)

1.0000 x 2^(-5): 不能存储(-5)指数。

由于隐式前导1.x会给出 的最小值1 x 2^-2 = 0.25,因此我们将无法使用规范化表示 - 正如我们所看到的:

0.1000 x 2^(-4): 不能存储(-4)指数。

0.0100 x 2^(-3): 不能存储(-3)指数。


规范化的数字意味着一个前导位,例如 ,1.xxxx它实际上并没有被存储。右侧的值被解释为1/21/41/81/16等,就像十进制系统将连续数字解释为101001000等的分数一样。

这将我们带到了非规范化或“次规范”值的编码。E = 0or是一个特殊值,e = (-2)暗示前导位是0,它为我们提供了有效位:0.xxxx

指数仍被解释为e = (-2)-> 2^e = 1/4。因此,尾数:[0.]0010给我们:(1/8) * 2^e = 1/32 = 0.03125

这给出了(非规范化的)8 位浮点表示:[0][000][0010]或:(00000010)


问:你能显示你之前的答案:(01000001)给出的值:2.125吗?

于 2015-08-21T16:50:49.317 回答