浮动精密钻头

时间:2011-06-10 05:03:53

标签: floating-point ieee-754

在这个wiki article中,它显示23位精度,8位表示指数,1表示符号

浮点类型中隐藏的第24位在哪里使得(23 + 1)为7个有效数字?

3 个答案:

答案 0 :(得分:5)

浮点数通常是标准化的。例如,考虑科学记数法,因为我们大多数人都是在学校里学到的。您总是缩放指数,因此小数点前面只有一位数。例如,代替123.456,编写1.23456x10 2

计算机上的浮点通常以相同的方式处理(几乎 1 ):数字被标准化,因此在二进制点之前恰好有一个数字(二进制​​点,因为大多数工作在二进制而不是十进制) 。但是有一个区别:在二进制的情况下,这意味着小数点之前的数字必须1。由于它始终是1,因此不需要存储该位。为了在每个浮点数中保存一点存储空间,1位是隐含的而不是存储的。

与往常一样,情况只是比这更多。主要区别在于非规范化数字。例如,考虑一下,如果您使用的是科学记数法,但您只能使用-99到+99之间的指数。如果你想存储一个像1.234 * 10 -102 这样的数字,你就不能直接这样做,所以它可能只是向下舍入到0。

非规范化数字为您提供了解决这个问题的方法。使用非规范化数字,您将其存储为0.001234 * 10 -99 。假设(通常是计算机上的情况)尾数和指数的位数都是有限的,这会损失一些精度,但仍然可以避免抛弃所有精度并只是调用它{ {1}}。


1 从技术上讲,存在差异,但它们对所涉及的基本理解没有任何影响。

答案 1 :(得分:2)

http://en.wikipedia.org/wiki/Single_precision_floating-point_format#IEEE_754_single_precision_binary_floating-point_format:_binary32

  

真正的意义包括23   分数位在右边   二元点和隐式领导   位(在二进制点的左侧)   值为1,除非指数为   存储全零

很好地解释,按照惯例/设计,最后一位没有明确存储,而是通过规范表明它存在,除非一切都是0'os。

答案 2 :(得分:2)

在编写时,单精度浮点格式有一个符号位,八个指数位和23个有效位。设s是符号位,e是指数位,f是有效位。以下是各种位组合的含义:

如果e和f为零,则根据s是0还是1,对象为+0或-0。

如果e为零且f不为,则对象为(-1) s * 2 1-127 * 0.f. “0.f”表示写入0,周期和f的23位,然后将其解释为二进制数字。例如,0.011000 ......是3/8。这些是“次正规”数字。

如果0< e< 255,对象是(-1) s * 2 e-127 * 1.f. “1.f”类似于上面的“0.f”,除了从1开始而不是0开始。这是隐含位。大多数浮点数都采用这种格式;这些是“正常”数字。

如果e为255且f为零,则根据s是0还是1,对象为+无穷大或无穷大。

如果e为255且f不为零,则对象为NaN(非数字)。 NaN的f字段的含义取决于实现;它没有完全由标准规定。通常,如果第一位为零,则它是信令NaN;否则它是一个安静的NaN。