【计算机组成原理】浮点运算方法和浮点运算器

浮点数加减法的步骤

① 0 操作数检查
② 比较阶码大小,完成对阶
③ 尾数进行加减法运算
④ 结果规格化
⑤ 舍入处理
⑥ 判断结果是否溢出

结合题目分析步骤

例:设 x = 2010 × 0.11011011,y = 2100 × (- 0.10101100),求x + y
🌱① 0 操作数检查:浮点加减运算过程比定点运算过程复杂,如果判断得知两个操作数中有一个为0,即可得知运算结果,就没必要进行后续一系列操作,节省时间。

此题判断得知操作数都非零,进入下一步。

② 比较阶码大小,完成对阶:为了便于只管理解,假设两数均用补码表示,阶码和尾数均用双符号位:

E M
[x] [Ex] = 00 010 [Mx]=00.11011011
[y] [Ey] = 00 100 [My]=11.01010100

(加粗的是符号位)

两浮点数进行加减,首先看两数的阶码是否相同,若不同,表示小数点的位置没有对齐,此时必须使两数的阶码变成相同的,这个过程叫对阶对阶操作规定使尾数右移,尾数右移后阶码做相应的增加,因此对阶时,总是 小阶向大阶看齐

[△E] = [Ex] - [Ey] = [Ex] + [ - Ey] = 11 110 = -2

所以,对阶应该使 Mx 右移 2 位,同时Ex 加 2

[Ex] = 00100
[Mx]= 00.00110110(11) → 右移 2 位后移出的最低两位

③ 尾数进行加减法运算:
对阶结束后,即可对尾数进行求和。(不论加法还是减法,都按加法操作(减法利用补码减法转换成补码的加法来做))方法与定点数的加减法的运算完全一样。
在这里插入图片描述

④ 结果规格化 → 化为1.M的形式
这题算到这,双符号位为11,表示负数,直接尾数规格化即可:尾数左移一位,阶码 -1。

但是双符号位表示尾数时,如果两符号位为 “10” 或 “01” (溢出),应将结果尾数右移一位,阶码+1

⑤ 舍入处理:对阶时尾数右移,低位的1可能被丢掉,从而造成一定的误差,要进行舍入处理。

简单的舍入有两种方法:
1)“0舍1入”法。如果右移时被丢掉的数位的最高位为0则舍去,为1则将尾数的末尾做 +1 运算
2)“恒置1”法。只要数位被移掉,就把尾数的末位恒置1

⑥ 判断结果是否溢出:阶码为00 100,符号位为00,不溢出。最终结果为: [x+y] 的阶码:00 100,尾数:11.00010110

[x+y] = 2100 × ( - 0.11101010)

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 08:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 08:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 08:40:02       82 阅读
  4. Python语言-面向对象

    2024-04-25 08:40:02       91 阅读

热门阅读

  1. MySQL中like关键字与索引的使用

    2024-04-25 08:40:02       157 阅读
  2. SQL中PIVOT函数的用法

    2024-04-25 08:40:02       92 阅读
  3. Vue入门

    Vue入门

    2024-04-25 08:40:02      37 阅读
  4. 基于vscode的c++开发(Windows)

    2024-04-25 08:40:02       74 阅读
  5. 探索简站WordPress主题:jianzhanpress.com的魅力所在

    2024-04-25 08:40:02       35 阅读
  6. Docker之常见FAQ记录清单

    2024-04-25 08:40:02       103 阅读