使用8位机器以标准化浮点形式表示0.03125

时间:2015-08-21 13:12:55

标签: floating-point data-representation

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

指数以超过3格式存储,尾数调整为 小数点前一位数/位。

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

1 个答案:

答案 0 :(得分:1)

“超过3”的指数格式(可以从3位指数中得到),给出2^(k - 1) - 1 (3)(k = 3){-3, 4}指数位。

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

使用e来表示指数的存储位,并使用E - bias来表示(0.03125),我们将1.xxxx乘以2直到我们有一个前导二进制{{} 1}} form,其中这个前导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等,就像十进制系统将连续数字解释为10的分数一样,1001000

这使我们对非规范化或“次正规”值进行编码。 E = 0e = (-2)是一个特殊值,暗示前导位为0,它为我们提供了有效数字:0.xxxx

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

这给出了{bias)8位denormalized表示: [0] [000] [0010] 或:(00000010)

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