好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

计算机组成原理第4章浮点数运算方法ppt课件.ppt

69页
  • 卖家[上传人]:资****亨
  • 文档编号:124770158
  • 上传时间:2020-03-13
  • 文档格式:PPT
  • 文档大小:1.94MB
  • / 69 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第4章 浮点运算规则 浮点加减运算 浮点乘除法运算 1 浮点数的表示 n机器中任何一个浮点数可写成 nMx为浮点数的尾数 一般为绝对值小于1的规 格化数 补码表示时允许为 1 机器中可用原 码或补码表示 nEx为浮点数的阶码 一般为整数 机器中大多 用补码或移码表示 nR为浮点数的基数 常用2 8 10或16表示 以下以基数为2进行讨论 n2 浮点加减运算 n设两个浮点数 尾数的加减运算规则与定点数完全相同 当两浮点数阶码不等时 因两尾数小数点的 实际位置不一样 尾数部分无法直接进行加 减运算 如 x 0 123 103 y 4 56 102 0 456 103 n3 浮点加减运算的步骤 1 对阶 使两数的小数点位置对齐 2 尾数求和 将对阶后的两尾数按定点加减运算规则求和 差 3 规格化 为增加有效数字的位数 提高运算精度 必须将求和 差 后的尾数规格化 4 舍入 为提高精度 要考虑尾数右移时丢失的数值位 5 判断结果 即判断结果是否溢出 n4 1 对阶 n这一步操作是将两个加数的小数点对 齐 n小阶向大阶看齐 阶码较小的数 其尾 数向右移 每右移一位 阶码加 1 直 到两数阶码相同为止 n尾数右移时可能会发生数码丢失 影 响精度 n5 n例 两浮点数 x 0 1101 201 y 0 1010 211 求x y 1 首先写出x y在计算机中的补码表示 x 补 00 01 00 1101 y 补 00 11 11 0110 阶码EX 尾数Mx Ey My 2 在进行加法前 必须先对阶 故先求阶差 E 补 Ex 补 Ey 补 Ex 补 Ey 补 00 01 11 01 11 10 即 E 2 表示x的阶码比y的阶码小 再按小阶向 大阶看齐的原则 将x的尾数右移两位 其阶码加2 得 x 补 00 11 00 0011 01 此时 E 0 表示对阶完毕 n6 2 尾数求和 n将对阶后的两个尾数按定点加 减 运算规则进 行运算 n注意 并不考虑溢出 溢出由阶码决定 接上例 两数对阶后得 x 补 00 11 00 0011 01 y 补 00 11 11 0110 则 Mx My 补 00 0011 11 0110 11 1001 01 即 x y 补 00 11 11 1001 01 n7 3 规格化 n如果采用双符号位的补码 则 当M 0时 其补码规格化形式为 M 补 00 1 当M 0时 其补码规格化形式为 M 补 11 0 n但对M 0时 有两种情况需特殊处理 M 1 2 则 M 补 11 100 0 对于补码而言 它不满 足于上面的规格化表示式 为了便于硬件判断 特规 定 1 2是规格化的数 对补码而言 M 1 则 M 补 11 000 0 因小数补码允许表示 1 故 1视为规格化的数 n8 n规格化又分左规和右规两种 左规 当尾数出现00 0 或11 1 时 需左规 左规时尾数左移一位 阶码减1 直到符合补码规格 化表示式为止 右规 当尾数出现01 或10 时 表示尾数 溢出 这在定点加减运算中是不允许的 但在浮点运 算中这不算溢出 可通过右规处理 右规时尾数右移 一位 阶码加1 接上例 求和结果为 x y 补 00 11 11 1001 01 尾数的第一数值位与符号位相同 需左规 即将其左 移一位 同时阶码减1 得 x y 补 00 10 1 11 0010 1 n9 4 舍入 n在对阶和右规的过程中 可能会将尾数的低位丢 失 引起误差 影响精度 为此可用舍入法来提 高尾数的精度 n进行舍入时应满足两个要求 n首先 对每一次运算的结果而言 要保证误差不超过 给定的范围 比如 设机器尾数长39位 要求每次运 算误差不超过末位 即第39位 的 1 即小于 2 39 n其次在大量的运算过程中要保证误差的平衡 即在每 一次运算时 由于舍入处理 可能使运算结果增大了 也可能减少了 但总的说来 增加和减少的机会必 需是均等的 否则会产生很大的积累误差 n10 4 舍入 常用的舍入方法 n 0舍1入 法 0舍1入 法类似于十进制运算中的 四舍五入 法 即在尾数右移时 被移去的最高 数值位为0 则舍去 被移去的最高数值位为1 则在尾数的末位加1 这样做可能使尾数又溢出 此时需再做一次右规 n特点 最大误差是最低位上的 1 2到接近于1 2之间 正误差可以和负误差抵消 属于比较理想的方法 但 实现起来比较复杂 如上例 x y 补 00 10 1 11 0010 1 00 10 11 0011 n 恒置1 法 尾数右移时 不论丢掉的最高数值 位是 1 或 0 都使右移后的尾数末位恒置 1 这种方法同样有使尾数变大和变小的两种可能 n特点 误差范围扩大 但正负误差可以相互抵消 实 现相对容易 n11 5 溢出判断 n在浮点规格化中已指出 当尾数之和 差 出现 01 或10 时 并不表示溢出 只有将此数 右规后 再根据阶码来判断浮点运算结果是否溢出 n若机器数为补码 尾数为规格化形式 并假设阶符取 2位 阶码取7位 数符取2位 尾数取n位 则它们能 表示的补码在数轴上的表示范围如下图 A最小负数 2 127 1 B最大正数 2 127 1 2 n a最大负数 2 128 2 1 2 n b最小正数 2 128 2 1 n12 n浮点机的溢出与否可由阶码的符号决定 即 阶码 E 补 01 为上溢 阶码 E 补 10 为下溢 按机器零处理 当阶符为 01 时 需做溢出处理 n下溢时 浮点数值趋于零 故机器不做溢出处理 仅把它作为机器零 n上溢时才是浮点数真正溢出 机器需停止运算 作溢出中断处理 n一般所说的浮点溢出 均是指上溢 n13 n例 设x 2 101 0 101000 y 2 100 0 111011 并假设阶 符取2位 阶码取3位 数符取2位 尾数取6位 求x y n解 由x 2 101 0 101000 y 2 100 0 111011 得 x 补 11 011 11 011000 y 补 11 100 00 111011 对阶 E 补 Ex 补 Ey 补 11 011 00 100 11 111 即 E 1 则x的尾数向右移一位 阶码相应加1 即 x 补 11 100 11 101100 求和 Mx 补 My 补 Ex 补 Ey 补 11 101100 11 000101 10 110001 即 x y 补 11 100 10 110001 尾数符号位出现 10 需右规 n14 n 续 即 x y 补 11 100 10 110001 尾数符号位出现 10 需右规 规格化 右规后得 x y 补 11 101 1 1 011000 1 舍入处理 采用0舍1入法 其尾数右规时末位丢1 则 x y 补 11 101 11 011001 溢出判断 经舍入处理后阶符为 11 不溢出 故最终 结果 x y 2 011 0 100111 n15 浮 点 数 加 减 运 算 流 程 图 n16 浮点加减法运算 1 大型计算机和高档微型机中 浮点加减法运算是由 硬件完成的 低档的微型机浮点加减法运算是由软 件完成的 但无论用硬件实现或由软件实现加减法 运算 基本原理是一致的 2 浮点加减法运算要经过对阶 尾数求和 规格化 舍入和溢出判断五步操作 其中尾数运算与定点加 减法运算相同 而对阶 舍入 规格化和溢出判断 则是浮点加减法与定点加减法运算不同的操作 3 在补码浮点运算中 阶码与尾数可以都用补码表示 在硬件实现的运算中 阶符和数符常常采取双符 号位 正数数符用00表示 负数数符用11表示 n17 n18 浮点乘除法运算 n设两浮点数 n则 1 阶码运算 2 尾数运算 n19 1 阶码运算 n若阶码用补码运算 乘积的阶码为 jx 补 jy 补 商的 阶码为 jx 补 jy 补 n若阶码用移码运算 则 jx 移 2n jx 2n jx 2n n为整数的位数 jy 移 2n jy 2n jy 2n n为整数的位数 所以 jx 移 jy 移 2n jx 2n jy 2n 2n jx jy 2n jx jy 移 可见 直接用移码求阶码和时 其最高位多加了 一个2n 要得到移码形式的结果 必须减去2n n20 由于同一个真值的移码和补码其数值部分完全相同 而 符号位正好相反 即 jy 补 2n 1 jy mod 2n 1 n因此如果求阶码和可用下式完成 jx 移 jy 补 2n jx 2n 1 jy 2n 2n jx jy jx jy 移 mod 2n 1 则直接可得移码形式 n同理 当作除法运算时 商的阶码可用下式完成 jx 移 jy 补 jx jy 移 n21 阶码运算 n阶码运算方法 进行移码加减运算时 只需将移 码表示的加数或减数的符号位取反 即变为补码 然后进行运算 就可得阶和 或阶差 的移码 n溢出判断 在原有移码符号位的前面 即高位 再 增加位符号位 并规定该位恒用 0 表示 而加 数或减数的补码的两位符号位则一致 n溢出的条件是运算结果移码的最高符号位为1 此时 若低位符号位为0 表示上溢 低位符号位为1 表示 下溢 n如果运算结果移码的最高符号位为0 即表明没溢出 此时若低位符号位为1 表明结果为正 低位符号 位为0 表示结果为负 n22 阶码运算 n溢出判断举例 n设阶码取三位 不含符号位 当jx 101 jy 110时 有 jx 移 01 101 jy 补 00 110 则 jx jy 移 jx 移 jy 补 01 101 00 110 10 001 结果 上溢 jx jy 移 jx 移 jy 补 01 101 11 100 01 001 结 果 1 n23 2 尾数运算 n 1 浮点乘法尾数运算 n 2 浮点除法尾数运算 n24 1 浮点乘法尾数运算 n预处理 检测两个尾数中是否有一个为0 若有一个为0 乘积必为0 不再作其他操 作 如果两尾数均不为0 则可进行乘法运 算 n相乘 两个浮点数的尾数相乘可以采用定 点小数的任何一种乘法运算来完成 n规格化 相乘结果可能要进行左规 左规 时调整阶码后如果发生阶下溢 则作机器 零处理 如果发生阶上溢 则作溢出处理 n25 n尾数截断 尾数相乘会得到一个双倍字 长的结果 若限定只取1倍字长 则乘积 的若干低位将会丢失 如何处理丢失的 各位值 通常有两种办法 n截断处理 无条件的丢掉正常尾数最低位 之后的全部数值 n舍入处理 按浮点加减运算讨论的舍入原 则进行舍入处理 n26 1 浮点乘法尾数运算 n舍入处理 n对于原码 采用0舍1入法时 不论其值是正数或负数 舍 使数的绝对值变小 入 使数的绝对值变大 n对于补码 采用0舍1入法时 若丢失的位不是全0 对正数来说 舍 入 的结果与原码正好相同 对 负数来说 舍 入 的结果与原码分析正好相反 即 舍 使绝对值变大 入 使绝对值变小 n为了使原码 补码舍入处理后的结果相同 对负数的补码可 采用如下规则进行舍入处理 n 当丢失的各位均为0时 不必舍入 n 当丢失的各位数中的最高位为0时 且以下各位不全为0 或 丢失的各位数中的最高位为1 且以下各位均为0时 则舍去被 丢失的各位 n 当丢失的各位数中的最高位为1 且以下各位又不全为0时 则在保留尾数的最末位加1修正 n27 n舍入操作实例 x 补舍入前舍入后对应的真值 1 01110000 1 01111000 1 01110101 1 01111100 1 0111 不舍不入 1 0111 舍 1 0111 舍 1 1000 入 0 1001 0 1001 0 1001 0 1000 对负数的补码可采用如下规则进行舍入处理 当丢失的各位均为0时 不必舍入 当丢失的各位数中的最高位为0时 且以下各位不全为0 或丢失的各位数中 的最高位为1 且以下各位均为0时 则舍去被丢失的各位 当丢失的各位数中的最高位为1 且以下各位又不全为0时 则在保留尾数的 最末位加1修正 x 原舍入前舍入后对应的真值 1 10010000 1 10001000 1 10001011 1 10000100 1 10。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.