提问人:Björn Max Jakobsen 提问时间:1/14/2022 最后编辑:phuclvBjörn Max Jakobsen 更新时间:1/15/2022 访问量:352
C 为什么DBL_MANT_DIG宏定义为 53 [重复]
C why is the DBL_MANT_DIG macro defined as 53 [duplicate]
问:
我想知道为什么DBL_MANT_DIG设置为 53,即使 ieee 754 标准使用 52 尾数位。它是否也计算符号位?
答:
3赞
Serge Ballesta
1/14/2022
#1
事实上,二进制 IEE 754 表示包括一个隐藏位:对于普通数字,尾数的前导位必须为 1,因此不必存储它。所以尾数实际上是前导 1 位加上其他 52 位,这给出了......53
来自维基百科的参考资料(强调我的):
对于指数在正常范围内的数字(指数字段既不是全 1 也不是全零),有效位数的前导位将始终为 1。因此,前导 1 可以隐含而不是显式存在于内存编码中,并且在标准下,显式表示的有效部分将位于 0 和 1 之间。此规则称为前导位约定、隐式位约定或隐藏位约定。 此规则允许二进制格式具有额外的精度位。
评论
1赞
Arc
1/15/2022
隐性远胜于隐性,我认为前者更严重,后者具有误导性。
评论