定点运算之浮点数加减法
程序员文章站
2022-06-03 11:59:02
...
一.运算步骤
1.对阶
• 求阶差;
• 将移阶码小的浮点数的尾数右移(小数点左移),并增加其阶码,直至两数阶码相等。
2.尾数加/减运算
用的是对阶之后的尾数
3.结果规格化
尾数为 00.1xxx 或 11.0xxx,直接执行下一步,否则需要规格化
符号位不相同(为01或10,溢出),右归即进行一次右移,然后将阶码加1
• 01.XXX →00.1XX
• 10.XXX→ 11.0XX
符号位相同,且最高数值位与符号位相同,左归,每移动一次,阶码减1(移动形式至00.1XX 或11.0XX)
• 11.100→11.000(左移一次,阶码减1)
11.110→11.000(左移两次,阶码减2)
• 00.0XX→00.1XX
总之,规格化完的尾数必须为 00.1XXX或11.0XXX
4.舍入
右移规格化时可能丢失一些低位的数值位, 为提高精度, 可采取舍入的方法:
•0 舍 1 入 : 若右移出的是1则在最低位加1,为0,直接去掉
例如 X=00.1101100, Y=00.1101011, 如果加符号位只需6位
则 X=00.1110 (100) 首位为1,即去掉(100)在最低位加1;
Y=00.1101 (011) 首位为0,直接去掉。
•恒置 1 : 只要数字位1被移掉,就将最后一位恒置成1。
5.检查阶码符号位是否溢出
不溢出 :00 , 11
溢出
• 阶码上溢 : 阶码的符号位为 01
• 阶码下溢 : 阶码的符号位为 10