浮点表示对形如V=x*2^y的有理数进行编码。
小数表示形式:
根据阶码(exp)的值,被编码的值可以分成三种不同的情况,如下:
1、规格化的值
这就是平常普通的模式。当exp的位模式既不全为0,也不全为1(单精度数值为255,双精度数值为2047)时。阶码的值是E=e-Bias,来表示有符号数,bias单精度为127,双精度为1023。由此产生的指数取值范围,对于单精度是-126+127(因为其e为1254),而对于双精度是-1022~+1023。
对于小数 字段frac的解释为描述小数值f,其中0<=f<1,其二进制表示为0.fn-1…f1f0。尾数定义为M=1+f。这种方式也叫做隐含的以1开头的表示。
2、非规格化的值
当阶码域全为0时。在这种情况下,阶码值是E=1-Bias,而尾数的值是M=f,也就是小数字段的值,不包含隐含的开头的1。
非规格化值的用途:
1)提供了一种表示数组0的方法,因为使用规格化数,必须总是使M>=1,因此就不能表示0。实际上,+0.0的浮点数表示的位模式全为0:符号位是0,阶码字段全为0,(表明是一个非规格化值),而小数域也全为0,这就得到M=f=0。当符号位为1时,而其他域全为0时,得到值-0.0,+0.0和-0.0在某些方面是不同的,而在其他方面是相同的。
2)表示那些非常接近0.0的数。它们提供了一种属性,称为逐渐溢出,其中,可能的数值分布均匀地接近于0.0。
3、特殊值
当阶码全为1时。
1)当小数域全为0时,得到的值表示无穷,其中当s=0时是正无穷,当s是1时,是负无穷。当我们把两个非常大的数相乘,或者除以0时,无穷能表示溢出的结果。
2)当小数域为非零时,结果称为NaN,“不是一个数”。一些运算的结果不能是实数或无穷,就会返回这样的NaN值,比如当计算根号-1或无穷减无穷时。
表示范围取决于阶码,表示精度取决于尾数