2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机组成原理知识点:浮点数的表示和运算,希望能帮助大家!
浮点数的表示和运算
1. 浮点数的表示
1)浮点数的表示范围;
浮点数是指小数点位置可浮动的数据,通常以下式表示:
N=M·RE
其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。因此,浮点数的机内表示一般采用以下形式:
浮点数的机内表示一般采用以下形式:
Ms是尾数的符号位,设置在最高位上。
E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表正阶或负阶。
M为尾数,有m位,由Ms和M组成一个定点小数。Ms=0,表示正号,Ms=1,表示负。为了保证数据精度属数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于(0.5)10。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。
2)IEEE754标准
根据IEEE 754国际标准,常用的浮点数有两种格式:
(1)单精度浮点数(32位),阶码8位,尾数24位(内含:位符号位)。
(2)双精度浮点数(64位),阶码11位,尾数53位(内含:位符号位)。
单精度格式32位,阶码为8位,尾数为23位。另有一位符号位S,处在最高位。
由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位。这样使得尾数的有效值变为1.M 。
例如,最小为x1.0…0,,最大为x1.1…1。规格化表示。故小数点左边的位横为1,可省去。
阶码部分采用移码表示,移码值127,1到254经移码为-126到+127。
S(1 | E(8 | M(23 | N( |
符号位 | 0 | 0 | 0 |
符号位 | 0 | 不等于 | (-1)S·2-126·(0.M) |
符号位 | 1 | - | (-1)S·2E-127·(1.M) |
符号位 | 255 | 不等于 | NaN( |
符号位 | 255 | 0 | 无穷大 |
0 有了精确的表示,无穷大也明确表示。对于绝对值较小的数,可以采用非规格化数表示,减少下溢精度损失。非规格化数的隐含位是0,不是1。
2. 浮点数的加/减运算
加减法执行下述五步完成运算:
1)“对阶”操作
比较两浮点数阶码的大小,求出其差ΔE,保留其大值E,E=max(Ex, Ey)。当ΔE≠0时,将阶码小的尾数右移ΔE位,并将其阶码加上ΔE,使两数的阶码值相等。
2)尾数加减运算
执行对阶之后,两尾数进行加减操作。
3)规格化操作
规格化的目的是使得尾数部分的绝对值尽可能以最大值的形式出现。
4)舍入
在执行右规或者对阶时,尾数的低位会被移掉,使数值的精度受到影响,常用“0”舍“1”入法。当移掉的部分最高位为1时,在尾数的末尾加1,如果加1后又使得尾数溢出,则要再进行一次右规。
5)检查阶码是否溢出
阶码溢出表示浮点数溢出。在规格化和舍入时都可能发生溢出,若阶码正常,加/减运算正常结束。若阶码下溢,则设置机器运算结果为机器零,若上溢,则设置溢出标志。