预习浮点数
1.浮点数:
小数点位置约定位可浮动的数称为浮点数,f浮点数的表示:
单精度,X=(-1)S×(1.M)×2E-127
双精度,X=(-1)S×(1.M)×2E-1023
2.浮点数的规格化:
为了在浮点数运算过程中尽可能地多保留有效数字的位数,使有效数字尽量占满尾数数位,必须在运算过程中对浮点数进行“规格化”操作。
规格化操作有两种:
左规和右规。当有效数位进到小数点前面时,需要进行右规,右规时,尾数每右移一位,阶码加1.直到尾数变成规格化形式,右规时指数会增加,因此有可能溢出;左规时,尾数每左移一位,阶码减1,直到位数变成规格化为止。
3.IEEE754浮点数标准:
32位单精度和64位双精度格式,对于IEEE754标准,基数隐含为2。尾数用原码表示,第一位总为1,所以可以省略第一位,使得单精度的23位实际表示了24位,双精度的52位,实际表示了53位。
IEEE754规定隐藏位1的位置在小数点之前。在IEEE754标准中,阶码用移码表示,但偏置常数并不是通常n位移码所用的2 n − 1 2^{n-1}2n−1,而是2 n − 1 − 1 2^{n-1}-12n−1−1,故而单精度的偏置常数为127,双精度的偏执常数为1023.由于隐藏了小数点前1的原因,如果换成等值纯小数表示的话,阶码就需要加1.但是无论是哪一种,最终的计算结果和偏置常数的情况是相同的。
4.具体的IEEE754各种数的解释,大概可以分类为如下:
全0阶码全0尾数:+0/-0
IEEE754的0有两种表示:+0和-0。0的符号取决于数的符号位s。一般情况下是等效的。
全0阶码非0尾数:非规格化数
非规格化数的特点就是阶码部分全为0,尾数的高位有一个或者连续几个0,但不全为0。因为隐藏位为0,并且单精度和双精度浮点数的阶码的值分别为-126或者-1022,故数值可以为(-1)s×(0.f)×2-126或者(-1)s×(0.f)×2-1022,非规格化数可用于处理阶码下溢,使得出现比最小规格化数还小的数时程序也能继续进行下去。简而言之就是尾数向右移动,阶码加1.
全1阶码全0尾数:+∞/-∞
引入无穷大和无穷小使得在计算过程出现异常的情况下计算可以继续下去,并且可以提供错误检测的功能。+∞在数值上大于所有有限数,-∞则小于所有有限数,无穷大数既可作为操作数,也可能是运算的结果。当操作数为无穷大时,系统可以有两种处理方式。
产生不发信号的非数NaN,如+∞+(-∞),+∞-(+∞),∞/∞等
产生明确的结果,如5+(+∞)=+∞,(+∞)+(+∞)=+∞,5-(+∞)=-∞,(-∞)-(+∞)=-∞等
全1阶码非0尾数:NaN(Not a Number)
表示没有定义的数,称为非数。分为不发信号和发信号两种。可以用非数表示每个变量的非初始化值
阶码非全0非全1:规格化非0数因为特殊值的存在,除去全0全1解码后,单精度阶码个数为254,最大阶数为127。

浙公网安备 33010602011771号