目录
浮点数的表示
浮点数加减法运算过程
由于浮点数尾数的小数点均固定在第一位数值前,可以预见浮点数的运算实质上是定点数运算。但是由于阶码的不同,尾数对应小数点位置实际是不同的,需要通过转化使小数点对齐后,才能直接进行加减运算。
浮点数加减运算大致可以分为如下几步:
- 对阶:使两小数点位置对齐
- 尾数运算:尾数进行加减运算
- 规格化:为增加有效数字尾数,提高运算精度,必须对其进行尾数规格化
- 舍入:规格化过程可能丢失有效位,需要考虑类似十进制中四舍五入的问题
- 溢出判断:判断结果是否溢出,保证结果准确无误
对阶
对阶目的是对齐两数的小数点,为此需求出阶差,再按小阶向大阶看齐原则,对小阶数尾数右移,每移1位对应阶码+1,直至两数阶码相等。
下述样例补码表示的前两位表示正负性,00为正,11为负。
尾数运算
将对阶后的两个尾数按照定点数运算规则进行加减
规格化
将尾数运算后结果进行规格化,转化为规格化形式。规格化形式如下:
不符合规格化形式尾数,需进行左规或者右规
左规:尾数左移,阶码相应减少对应左移位数
右规:尾数右移,阶码相应增加对应右移位数
注:右规过程,可能出现形式01.xx…x或10.xx…x,此时表示尾数运算结果绝对值大于1,虽然定点数运算中不允许,但浮点数运算中不算溢出,直接右规即可。
需注意特殊情况:
舍入
在对阶和右规过程,尾数可能丢失有效位,引起误差影响精度,为此可用舍入法提高尾数精度。常用舍入法有:0舍1入法,恒置1法
例题
溢出判断
浮点数溢出一般指需要表示的数超出表示范围,一般尾数发生的下溢按照归0处理即可,不算真正的溢出,溢出指上溢。换句话说,尾数的溢出不算是溢出,顶多是丢失精度,阶码的溢出才是真正的溢出,采用阶码溢出判断即可,本质为定点数溢出判断。