MENU

浮点数加减运算

October 28, 2018 • Read: 281 • 计算机组成原理

浮点运算要把阶码和尾数分别处理。

阶码运算定点整数运算,对阶码的运算四种:阶码加1,阶码减1,两阶码求和,两阶码求差。

尾数的运算是定点小数运算,运算过程中一般取双符号位

浮点运算器总是由处理阶码和处理尾数的两部分组成

浮点数的溢出(Overflow)

当一个数的大小超出了浮点数的表示范围时,机器无法表示该数,就发生溢出。浮点数的溢出判断方法与定点数不同,是对规格化数的阶码进行判断。

当浮点数的阶码大于机器所能表示的最大阶码时(即阶码发生正溢出),此时机器应停止运算,进行出错中断处理。

浮点数的尾数运算的溢出可以通过右规消除,所以不算溢出

当浮点数的阶码小于机器所能表示的最小阶码时(即阶码发生负溢出),这时一般规定把该浮点数的尾数强迫置零,作为零处理,机器可继续运行。

当一个浮点数的尾数为0,不论其阶码为何值,或者阶码的值小于等于都把该浮点数看成零值,称为机器零。

浮点加法运算

1.对阶(Alignment)

2.尾数相加(Mantissa)

完成对阶后,将两浮点数的尾数部分相加,方法与定点小数加法相同

3.规格化处理(Normalize the Result)


对右移的两种情况做一下特殊说明:
10,110 -> 11,011
01,110 -> 00,111

4.舍入操作(Rounding)

5.检查阶码是否溢出(Check the Exponent Overflow or Underflow)

若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志

例题


iRdbQg.png

总结

在做题过程中,有一些小细节难免会忽略,这里做一个总结:

  1. 对阶时,尾数如果右移,不是直接添加0,而是看尾符是什么,就添加什么
  2. 对阶时,尾数如果左移,最低位直接加0,高位也不会把尾符挤掉,而是直接丢掉
  3. 规格化时,尾数为01.1...或10.0...就要进行右移一次(将符号位移从左往右数第二个数移下来,符号位最高位表示这个数的真实符号)。
  4. 规格化时,尾数为00.0...或11.1...就要进行左移,高位不会挤掉符号位,而是直接丢弃
  5. 浮点数溢出只有一种情况,就是阶码溢出
最后编辑于: October 31, 2018
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment