使用8位机器以标准化浮点形式表达0.03125
;符号为1位,3位为
指数,尾数为4位。
指数以超过3格式存储,尾数调整为 小数点前一位数/位。
哦对不起!这是我在stackoverflow中的第一篇文章,我不习惯这种网站。我的答案是0 100 0001,我不知道它是否正确。我认为符号是0,因为有一个正值,100是指数,对于尾数,我尝试将其作为0.03125 * 2,依此类推,所以我得到00001的值和4位的尾数所以答案是0001。 希望我已经解释了我清楚地解决这个问题的方式,因为我的英语非常糟糕。谢谢你们纠正我的询问方式。
答案 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/2
,1/4
,1/8
,1/16
等,就像十进制系统将连续数字解释为10
的分数一样,100
,1000
等
这使我们对非规范化或“次正规”值进行编码。 E = 0
或e = (-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?