![计算机系统:基于x86+Linux平台](https://wfqqreader-1252317822.image.myqcloud.com/cover/406/51293406/b_51293406.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.1 浮点数的表示范围
任意一个浮点数可用两个定点数表示,用定点小数表示浮点数的尾数,用定点整数表示浮点数的阶。阶的编码称为阶码,为便于对阶,通常采用移码形式。
表示浮点数的两个定点数位数有限,因而浮点数的表示范围有限。以下例子用于说明可表示浮点数位于数轴上的位置。
例2.21 将十进制数65798转换为32位浮点数格式。
![](https://epubservercos.yuewen.com/1324C5/30242684207478306/epubprivate/OEBPS/Images/48_02.jpg?sign=1739143731-RSuWBBIBP1xbyBHMe81oz65LyJ77mVsv-0-e08568bd32e714dc2d53cb00018c0268)
其中,第0位为数符S;第1~8位为8位移码表示的阶码E(偏置常数为128);第9~31位为24位二进制原码小数表示的尾数。基数为2,规格化尾数形式为±0.1bb…b,其中第一位“1”不明显表示出来,这样可用23个数位表示24位尾数。
解:因为(65798)10=(1 0000 0001 0000 0110)2=(0.1 0000 0001 0000 0110)2×217,所以数符S=0,阶码E=(128+17)10=(10010001)2。
故65798用该浮点数形式表示如下。
![](https://epubservercos.yuewen.com/1324C5/30242684207478306/epubprivate/OEBPS/Images/48_03.jpg?sign=1739143731-DV2NUSs98etMlcmTDstfws9QEoemjw4V-0-8d3f51677024904ebc24bd9ee09f4da2)
用十六进制表示为4880 8300H。
上述格式的规格化浮点数的表示范围如下。
• 正数最大值:0.11…1×211…1=(1-2-24)×2127。
• 正数最小值:0.10…0×200…0=(1/2)×2-128=2-129。
因为原码是对称的,所以该浮点格式的范围关于原点对称,如图2.3所示。
![](https://epubservercos.yuewen.com/1324C5/30242684207478306/epubprivate/OEBPS/Images/49_01.jpg?sign=1739143731-cAhMvzK3GRunkM6s4ZCdWsdtq535tf98-0-0b5fe6364a036dea36f8e9a4b339b370)
图2.3 规格化浮点数的表示范围
在图2.3中,数轴上有4个区间的数不能用浮点数表示。这些区间称为溢出区,接近0的区间为下溢区,向无穷大方向延伸的区间为上溢区。
根据浮点数的表示格式,只要尾数为0,对于任意阶码,其值均为0,这样的数称为机器零,因此机器零的表示不唯一。通常,用阶码和尾数同时为0表示机器零。当结果出现尾数为0时,不管阶码为何值,都将阶码取为0。机器零有+0和-0之分。