2.3.1浮点数的表示格式

对于任意一个实数X,可以表示为X=(-1)^s x M x R^E

其中S取值为0或1,用来决定数X的符号,一能用0表示正,1表示负; M是一个二进制定点小数,称为数X的尾数,E是一个二进制定点整数,称为数X的阶码或指数﹔R是基数,可以的定为2、4、16等。

2.3.2浮点数的规格化

浮点数尾数的位数决定浮点数的有效数位,有效数位越多,数据的精度越高。为了在浮点数运算过程中尽可能多地保留有效数字的位数,使有效数字尽量占满尾数数位,必须在运算过程中对浮点数进行“规格化”操作。

对浮点数的尾数进行规格化,除了能得到尽量多的有效位数以外,还可以使浮点数的表示具有唯一性。

规格化操作有两种:“左规”和“右规”。当有效数位进到小数点前面时,需要进行右规。右规时,尾数每右移一位,阶码加1,直到尾数变成规格化形式为止,右规时指数会增加.因此有可能溢出;当出现形如士0.0…0bb…b×2^E的运算结果时,

需要进行左规,左规时,尾数每左移一位,阶码减1,直到尾数变成规格化形式为止。

2.3.3 IEEE754浮点数标准

IEEE754标准格式中,指数用移码表示,偏置常数并不是通常n位移码所用的2^n-1,而是2^n-1 -1,因此,单精度和双精度浮点数的偏置常数分别是127和1023。

(1)尾数可表示的位数多一位,因而使浮点数的精度更高。

(2)指数的可表示的范围更大,因而使浮点数范围更大。

 

1.全0阶码全0尾数:+0/-0

IEEE754的零有两种表示:+0和-0.零的符号取决于数符s。一般情况下+0和-0是等效的。
2.全0阶码非0尾数:非规格化数

非规格化数的特点是阶码为全0,尾数高位有一个或几个连续的0,但不全为0。因此非规格化数的隐藏位为0,并且单精度和双精度浮点数的指数分别为一126或一1022,

故数值分别为(—1)^s×0.f×2^-126和(一1)^s×0.f×2^—1022。

非规格化数可用于处理阶码下溢,使得出现比最小规格化数还小的数时程序也能继续进行下去。

3.全Ⅰ阶码全0尾数:+∞/-∞

引入无穷大数使得在计算过程出现异常的情况下程序能继续讲行下去,并且可为程序提供错误检测功能。+oo在数值上大干所有有限数,一oo则小于所有有限数,

穷大数既可作为操作数﹐也可能是运算的结果。当操作数为无穷大时,系统可以有两种处理方式

(1)产生不发信号的非数NaN。如+oo+(一oo),+co - (+oo ) , oo/oo等。
(2)产生明确的结果。如5+(十oo)=+oo,(+oo)+(+oo)=+oo,5一(+oo)=-oo,(-oo)-(oo)=-oo等。

4.全1阶码非0尾数:

NaN给出了能产生不发信号(静止的)NaN的计算操作。NaN(Not a Number)表示一个没有定义的数,称为非数。分为不发信号(quiet)和发信

号(signaling)两种非数。有的书中把它们分别称为“静止的NaN”和“通知的NaN”。

5.阶码非全0且非全1:规格化非0数

对于阶码范围在1~254(单精度)和1~2046(双精度)的数,是一个正常的规格化非0数。根据IEEE 754的定义,这种数的指数的范围应该是一126~+127(单精度)和一1022~+1023(双精度),

其值的计算公式分别为(-1)^s×1.f×2^e-127和(—1)^s×1.f×2^e-1023。

 

 

 

posted on 2020-09-17 21:56  王宏博  阅读(291)  评论(0编辑  收藏  举报