我正在研究涉及IEEE双精度浮点标准的数字设计项目(Verilog) .
我有一个关于IEEE浮点数表示的查询 . 在IEEE浮点表示中,数字以标准化格式表示,这意味着默认情况下有效位为1(也称为隐藏位) .
当浮点数被去标准化时,有效位被认为是0,并且通过将小数点向左移位来使指数为0 .
我的询问是关于去规范化程序 . 例如,如果指数可以高达120,在这种情况下,我们如何处理小数位(IEEE为43位 - 双精度)?
我们是否做到以下几点
1)增加分数的宽度?即43分数比特去标准化=> 43例如43 120 = 163比特?
2)简单地移动位并保持分数的宽度不变?即丢弃过多的比特?
3 回答
IEEE二进制浮点中唯一的非标准化数字是指数字段中为零的数字,对应于可能的最小指数 . 它们保持正常的分数宽度,因此前导零的数量增加,精度降低 . 对于小数字来说,这是一个很好的权衡,使下溢更平滑 .
两条评论 .
首先,双精度(64位)浮点数对于尾数有52个显式位,加上一个隐含位(如您所述,不是43位) .
其次,只有具有全比特零指数的值被解释为非规范化 . 当值接近零时,这允许精度优雅地降级 .