《计算机组成原理》PPT课件

上传人:san****019 文档编号:21171774 上传时间:2021-04-25 格式:PPT 页数:79 大小:710.60KB
返回 下载 相关 举报
《计算机组成原理》PPT课件_第1页
第1页 / 共79页
《计算机组成原理》PPT课件_第2页
第2页 / 共79页
《计算机组成原理》PPT课件_第3页
第3页 / 共79页
点击查看更多>>
资源描述
计 算 机 组 成 原 理第 6章 计 算 机 的 运 算 方 法 6.3 定 点 运 算移 位 、 加 减 、 乘 、 除 移 位 器ALU选 择 器 通 用 寄 存 器 组 选 择 器运 算 器 结 构 ARM7数 据 通 路 地 址 端 口 寄 存 器 组 乘 法 器 桶 式 移 位 器 ALU 数 据 端 口 移 位 运 算1. 移 位 的 意 义2. 算 术 移 位 规 则3. 算 术 移 位 与 逻 辑 移 位 1. 移 位 的 意 义 移 位 运 算 又 叫 移 位 操 作 。 左 移 或 右 移 n位 相 当 于 乘 以 或 除 以 2n 当 计 算 机 没 有 乘 ( 除 ) 运 算 线 路 时 , 可 以 采 用 移 位 和 加 法 相 结合 , 实 现 乘 ( 除 ) 运 算 。 机 器 数 字 长 往 往 是 固 定 的 。 当 机 器 数 左 移 或 右 移时 , 必 然 会 使 其 低 位 或 高 位 出 现 空 位 。 对 空 出 的 空 位 应 该 添 补 0还 是 1呢 ? 这 与 机 器 数 采 用 有 符 号 数 还 是 无 符 号 数 有 关 。 对 有 符 号 的 移 位 叫 算 术 移 位 , 无 符 号 数 的 移 位 称 逻 辑 移 位 。 a 1 a2 an-1 ana2 an-1 an 出 现 的 空 位 该 如 何 填 补 ?左 移 2.算 术 移 位 算 术 移 位 : 有 符 号 数 移 位 特 点 : 移 位 前 后 符 号 位 保 持 不 变 。 正 数 : 由 于 x原 =x补 =x反 =真 值 , 故 移 位 后出 现 的 空 位 均 以 0添 之 。 负 数 : 原 码 不 论 左 移 或 右 移 , 添 补 代 码 均 为 0 原 因 : 负 数 的 原 码 其 数 值 部 分 与 真 值 相 同 。 算 术 运 算 是 对 真 值 操 作 。 在 计 算 机 中 对 真 值 的 机 器 数 操 作 后 , 应 该 保 证 真 值 的 一 致 性 和 运 算 结 果 的 正 确 性 。 2.算 术 移 位 负 数 : 反 码 不 论 左 移 或 右 移 , 添 补 代 码 均 为 1 原 因 : 负 数 的 反 码 其 各 位 除 符 号 位 外 与 负 数 的 原 码 正 好相 反 。 反 码 数 值 部 分 填 补 代 码 1, 相 当 于 “ 真 值 ” 的 数值 部 分 填 补 代 码 0。 负 数 : 补 码 分 析 任 意 负 数 的 补 码 : 当 对 其 由 低 位 向 高 位 找 到 第 一 个“ 1”时 , 在 此 “ 1”左 边 的 各 位 ( 高 位 ) 均 与 对 应 的 反 码相 同 , 而 在 此 “ 1”右 边 的 各 位 ( 低 位 , 包 括 此 “ 1”在 内 )均 与 对 应 的 原 码 相 同 。 右 移 时 空 位 出 现 在 高 位 , 则 添 补 的 代 码 应 与 反 码 相 同 , 即 添 1 ; 左 移 时 空 位 出 现 在 低 位 , 即 添 0 。 不 同 码 制 机 器 数 移 位 后 的 空 位 添 补 规 则 码 制 添 补 代 码正 数 原 码 、 补 码 、 反 码 0 负 数 原 码 0补 码 左 移 添 0右 移 添 1反 码 1 例 题 (Page.235) 设 机 器 数 字 长 为 8位 ( 含 一 位 符 号 位 ) , 若A= 26, 写 出 三 种 机 器 数 ( 原 码 、 补 码 、 反 码 )左 、 右 移 一 位 和 两 位 后 的 表 示 形 式 及 对 应 的 真 值 ,并 分 析 结 果 的 正 确 性 。 ( 1) A=+26=(+11010)2 移 位 前 左 移 一 位 : +52 右 移 一 位 : +13 左 移 、 右 移 两 位 : 略 0 0 0 1 1 0 1 00 0 1 1 0 1 0 00 0 0 0 1 1 0 1 对 于 正 数 , 三 种 机 器 数 移 位 后 符 号 位 不 变 , 如 果 左 移 时 最 高 数 位 丢 1,结 果 “ 出 错 ” ; 如 果 右 移 时 最 低 数 位 丢 1, 影 响 精 度 。 例 题 (Page.235) ( 2) A=-26=(-11010)2 原 码 移 位 前 原 码 左 移 一 位 : -52 原 码 右 移 一 位 : -13 补 码 移 位 前 补 码 左 移 一 位 : -52 补 码 右 移 一 位 : -13 1 0 0 1 1 0 1 01 0 1 1 0 1 0 01 0 0 0 1 1 0 11 1 1 0 0 1 1 01 1 0 0 1 1 0 01 1 1 1 0 0 1 1 例 题 (Page.235) ( 2) A=-26=(-11010)2 反 码 移 位 前 反 码 左 移 一 位 : -52 反 码 右 移 一 位 : -13 对 于 负 数 , 三 种 机 器 数 移 位 后 符 号 位 均 不 变 。 如 果 负 数 的 原 码 左 移 时 , 高 位 丢 1, 结 果 出 错 ;低 位 丢 1, 影 响 精 度 。 如 果 负 数 的 补 码 左 移 时 , 高 位 丢 0, 结 果 出 错 ;低 位 丢 1, 影 响 精 度 。 如 果 负 数 的 反 码 左 移 时 , 高 位 丢 0, 结 果 出 错 ;低 位 丢 0, 影 响 精 度 。 1 1 1 0 0 1 0 11 1 0 0 1 0 1 11 1 1 1 0 0 1 0 例 题 (Page.235)移 位 操 作 机 器 数 对 应 的 真 值移 位 前 原码 1,0011010 -26左 移 一 位 1,0110100 -52左 移 两 位 1,1101000 -104右 移 一 位 1,0001101 -13右 移 两 位 1,0000110 -6移 位 前 补码 1,1100110 -26左 移 一 位 1,1001100 -52左 移 两 位 1,0011000 -104右 移 一 位 1,1110011 -13 右 移 两 位 1,1111001 -7移 位 前 反码 1,1100101 -26左 移 一 位 1,1001011 -52左 移 两 位 1,0010111 -104右 移 一 位 1,1110010 -13右 移 两 位 1,1111001 -6 实 现 算 术 左 移 和 右 移 操 作 的 硬 件 框 图 ( d) 负 数反 码 的 移 位操 作( a) 真 值为 正 的 三 种机 器 数 的 移位 操 作 ( b) 负数 原 码 的移 位 操 作 ( c) 负数 补 码 的移 位 操 作 3. 逻 辑 移 位 无 符 号 数 的 移 位 称 为 逻 辑 移 位 。 逻 辑 移 位 的 规 则 逻 辑 左 移 时 , 高 位 移 出 , 低 位 添 0; 逻 辑 右 移 时 , 低 位 移 出 , 高 位 添 0。 例 1: 寄 存 器 内 容 为 01010011 逻 辑 左 移 为 10100110 算 术 左 移 为 00100110( 最 高 数 位 “ 1”移 丢 ) 例 2: 寄 存 器 内 容 为 10110010 逻 辑 右 移 为 01011001 若 将 其 视 为 补 码 , 算 术 右 移 为 11011001 采 用 带 进 位 (Cy)的 移 位 为 了 避 免 算 术 左 移 时 最 高 数 位 丢 1, 可 采 用带 进 位 (Cy)的 移 位 符 号 位 移 至 Cy, 最 高 数 位 就 可 避 免 移 出 。 左 移 可 以 由 右 移 位 实 现a7 a6 a5 a1 a0a4 a3 a2a 7 a6 a5a1 a0 a4 a3 a2循 环 右 移 两 位 右 移 两 位左 移 8-2位左 移 i 位 等 价 于 右 移 32 i 位 移 位 寄 存 器 移 位 寄 存 器 应 用 很 广 , 是 高 速 微 处 理 器 中 的 常 用 部 件 用 于 实 现 移 位 指 令 、 浮 点 计 算 中 的 小 数 点 对 齐 等 。 可 构 成 移 位 寄 存 器 型 计 数 器 : 顺 序 脉 冲 发 生 器 ; 串 行 累 加 器 ; 可 用 于 串 并 数 据 转 换 。 Q0 Q1 Q2 Q3 DSR D0 D1 D2 D3 DSL CR MBMACP 74LS194双 向 移 位 寄 存 器74LS194的 功 能CR CP MB MA Q0 Q1 Q2 Q3 0 0 0 0 0 1 0 0 保 持 1 0 1 DSR 右 移 一 位 1 1 0 左 移 一 位 D SL 1 1 1 D0 D1 D2 D3 (并 行 输 入 ) 桶 式 移 位 器 BS(Barrel Shifter) BS能 在 单 周 期 内 完 成 多 种 方 式 、 各 种 位 数 的 移 位操 作 。 算 术 移 位 、 逻 辑 移 位 、 循 环 移 位 针 对 不 同 的 控 制 方 式 , BS有 多 种 实 现 方 式 : 全 译 码 方 式 全 编 码 ( 不 译 码 ) 方 式 部 分 译 码 方 式 基 于 三 值 逻 辑 控 制 的 方 式 BS的 实 现BSin31:0out31:0 b4b3b2b1b0In31:0: 32位 输 入Out31:0: 32位 输 出B4:0: 移 位 位 数Sin1, Sin2: 移 位 方 式 左 移 、 右 移 、 循 环 、 保 持Sin2Sin1 全 译 码 方 式 对 表 示 移 位 次 数 的 二 进 制 位 进 行 完 全 译 码 , 分 别 给 出 各 种 移 位 的单 独 控 制 线 。 对 于 32位 字 长 来 说 , 移 位 部 分 有 32根 控 制 线 SC31 SC0分 别 控 制移 310位 时 的 操 作 . 移位输出 移位输入 b0 b1 b2 b3 b4SC0 SC1 SC31 5-32译码 8位 全 译 码 方 式 BS 右 移 两 位 : 010a0a0a1a1a2a2a3a3a4a4a5a5a6 a6a7a7 a0a0a1a1a2a2a3a3a4a4a5a5a6 a6a7a7 in2 in1 Sin1a7 SC0 SC1SC2 SC3SC4 SC5SC6 SC7D0/1 Sin2 加 法 和 减 法 运 算1. 补 码 加 减 的 基 本 公 式2. 溢 出 判 断3. 补 码 加 减 法 所 需 的 硬 件 配 置4. 补 码 加 减 运 算 控 制 流 程 加 减 法 运 算 原 码 加 减 法 比 较 复 杂 , 需 要 事 先 判 断 数 的 符 号 , 然 后 决定 做 加 法 还 是 做 减 法 运 算 。 补 码 的 加 减 法 运 算 比 较 简 单 , 采 用 补 码 加 减 法 运 算 , 可将 “ 正 数 加 负 数 ” 的 操 作 , 转 化 为 “ 正 数 加 正 数 ” 的 操作 。 一 般 计 算 机 采 取 补 码 进 行 加 减 法 运 算 。 因 减 法 运 算 可 看 作 被 减 数 加 上 一 个 减 数 的 负 值 , 即 A-B=A+(-B), 故 在 此 将 机 器 中 的 减 法 运 算 和 加 法 运 算 合 在一 起 讨 论 。 符 号 位 参 与 运 算 1. 补 码 加 减 的 基 本 公 式 补 码 加 法 的 基 本 公 式 为 : 整 数 A补 +B补 =A+B补 (mod 2n+1) 小 数 A补 +B补 =A+B补 (mod 2) 对 于 减 法 因 A-B=A+(-B), 则 A-B补 =A+(-B)补 , 由 补 码加 法 基 本 公 式 可 得 : 整 数 A-B补 =A补 +-B补 (mod 2n+1) 小 数 A-B 补 =A补 +-B补 (mod 2) X+Y补 = X补 +Y补 X-Y补 = X补 +-Y补( d) ( -7) +( -6) 1,001 1,010 0,011 =溢 出( b) ( -4) +( +4) 1,100 0,100 0,000 =0( c) ( +5) +( +4) 0,101 0,100 1,001 =溢 出( a) ( -7) +( +5) 1,001 0,101 1,110 =-2运 算 过 程 举 例 ( 假 设 机 器 字 长 4位 , 其 中 1位 表 示 符 号 位 ) :补 码 的 加 、 减 法 的 例 子 1 丢 掉计 算 机 中 这 种 超 出 机 器 字长 的 现 象 , 称 为 溢 出 。在 补 码 定 点 运 算 中 , 必 须对 结 果 是 否 溢 出 进 行 判 断 。1 2.溢 出 判 断 如 果 运 算 的 结 果 , 超 出 了 计 算 机 能 表 示 的 数 的范 围 , 会 得 出 错 误 的 结 果 , 这 种 情 况 称 为 溢 出 。 对 于 字 长 为 n的 计 算 机 , 那 么 它 能 表 示 的 定 点 补 码 范围 为 n n - 若 运 算 结 果 小 于 n 或 大 于 n - , 则 发 生 溢出 发 生 溢 出 时 数 值 的 有 效 位 占 据 了 符 号 位 。 两 种 方 法 用 一 位 符 号 位 判 断 溢 出 用 两 位 符 号 位 判 断 溢 出 用 一 位 符 号 位 判 断 溢 出 两 个 相 同 符 号 数 相 加 , 其 运 算 结 果 符 号 应 与 被 加数 相 同 , 否 则 产 生 溢 出 ; 相 异 符 号 数 相 加 , 相 同 符 号 数 相 减 , 不 会 产 生 溢出 。 两 个 相 异 符 号 数 相 减 , 其 运 算 结 果 符 号 应 与 被 减数 相 同 , 否 则 产 生 溢 出 。 由 于 减 法 运 算 在 机 器 中 是 用 加 法 器 实 现 的 , 如 此有 如 下 结 论 : 无 论 是 加 法 还 是 减 法 , 只 要 实 际 参 加 操 作 的 两 个 数( 减 法 时 即 为 被 减 数 和 “ 求 补 ” 以 后 的 减 数 ) 符 号 相同 , 结 果 又 与 原 操 作 数 的 符 号 不 同 , 即 为 溢 出 。 用 一 位 符 号 位 判 断 溢 出 准 则 : “ 两 个 相 同 符 号 数 相 加 , 其 运 算 结 果 符 号 应与 被 加 数 相 同 , 否 则 产 生 溢 出 ” 这 种 判 断 方 法 不 容 易 由 硬 件 来 实 现 。 先 判 断 操 作 数 的 符 号 是 否 相 同 , 再 判 断 结 果 的 符 号 与 原 操 作 数 的符 号 是 否 相 同 通 常 用 符 号 位 产 生 的 进 位 和 最 高 有 效 位 向 符 号 位 产生 的 进 位 进 行 异 或 操 作 后 , 按 其 结 果 进 行 判 断 。 若 异 或 结 果 为 1( 即 不 同 ) , 则 溢 出 ; 若 异 或 结 果 为 0( 即 相 同 ) , 则 没 有 溢 出 。 快 ! X+Y补 = X补 +Y补 X-Y补 = X补 +-Y补( d) ( -7) +( -6) 1,001 1,010 0,011 =溢 出( b) ( -4) +( +4) 1,100 0,100 0,000 =0( c) ( +5) +( +4) 0,101 0,100 1,001 =溢 出( a) ( -7) +( +5) 1,001 0,101 1,110 =-2运 算 过 程 举 例 ( 假 设 机 器 字 长 4位 , 其 中 1位 表 示 符 号 位 ) :补 码 的 加 、 减 法 的 溢 出 判 断1 丢 掉1 用 两 位 符 号 位 判 断 溢 出 变 形 补 码 用 变 形 补 码 做 加 法 操 作 时 , 两 位 符 号 位 连 同 数 值部 分 一 起 参 加 运 算 。 运 算 结 果 溢 出 判 断 规 则 : 正 常 时 两 个 符 号 位 的 值 相 同 两 个 符 号 位 不 同 , 则 表 明 发 生 了 溢 出 。 )4mod(104 01 xx xxx 补 双 符 号 位 溢 出 判 断 法双 符 号 含 义 : 00表 示 运 算 结 果 为 正 数 ;01表 示 运 算 结 果 正 溢 出 ;10表 示 运 算 结 果 负 溢 出 ; 11表 示 运 算 结 果 为 负 数 。 第 一 位 符 号 位 为 运 算 结 果 的 真 正 符 号 位 。 例 1解 : X补 = 11.0110+1 = 1 1. 0 1 1 1 + Y补 = 11.1010+1 = 1 1. 1 0 1 1 X+Y补 = 1 1 1. 00 1 0 最 高 位 1丢 掉 两 个 符 号 位 相 同 , 运 算 结 果 无 溢 出 最 终 结 果 为 : X+Y= - 0.1110 设 有 效 数 值 位 为 4, X= - 0.1001, Y= - 0.0101, 求 X+Y=? 例 4解 : X补 = 11.0100+1=11.0101 Y补 = 00.0111 -Y补 =11.1001 X补 = 1 1. 0 1 0 1 + -Y补 = 1 1. 1 0 0 1 X+Y补 = 11 0. 1 1 1 0两 个 符 号 位 10不 同 ,运 算 结 果 负 溢 出 。设 有 效 数 值 位 为 4, X= - 0.1011, Y= 0.0111, 求 X-Y=? 3.补 码 加 减 法 所 需 的 硬 件 配 置X 1 4.补 码 加 减 运 算 控 制 流 程 乘 法 运 算1. 笔 乘 算 法 的 分 析 与 改 进2. 原 码 乘 法 原 码 一 位 乘 运 算 规 则 原 码 一 位 乘 所 需 的 硬 件 配 置 原 码 一 位 乘 控 制 流 程 原 码 两 位 乘3. 补 码 乘 法 校 正 法 比 较 法 乘 运 算 规 则 补 码 比 较 法 ( Booth乘 法 ) 所 需 的 硬 件 配 置 补 码 比 较 法 ( Booth乘 法 ) 控 制 流 程 补 码 两 位 乘 1. 分 析 笔 算 乘 法 设 A=0.1101, B=0.1011, 求 A B。 乘 积 的 符 号 由 两 数 符 号 心 算 而 得 : 正 正 得 正 数 值 部 分 的 运 算 如 下 : 所 以 A B=+0.10001111 被 乘 数 A的 多 次 左 移 , 以 及 四 个 位 积 的 相 加 运 算 。若 计 算 机 完 全 模 仿 笔 算 乘 法步 骤 , 将 会 有 两 大 困 难 :其 一 , 将 四 个 位 积 一 次 相 加 ,机 器 难 以 实 现 ;其 二 , 乘 积 位 数 增 长 了 一 倍 ,这 将 造 成 器 材 的 浪 费 和 运 算时 间 的 增 加 。 笔 算 乘 法 的 改 进 AB= A0.1011 =0.1A+0.00A+0.001A+0.0001A =0.1A+0.00A+0.001(A+0.1A) =0.1A+0.010A+0.1(A+0.1A) =0.1A+0.10A+0.1(A+0.1A) =2-1A+2-1 0A+2-1 (A+2-1A) =2-1A+2-1 0A+2-1 (A+2-1(A+0) 两 数 相 乘 的 过 程 , 可 视 作 加 法 和 移 位 (乘 2-1相 当 于 做 一 位 右 移 )两 种 运 算 , 这 对 计 算 机来 说 是 非 常 容 易 实 现 的 。 笔 算 乘 法 的 改 进 2-1A+2-1 0A+2-1 (A+2-1(A+0) 从 初 始 值 为 0开 始 , 对 上 式 作 分 步 运 算 , 则第 一 步 : A+0=0.1101+0.0000=0.1101第 二 步 : 2-1 (A+0) 0.01101第 三 步 : A+2-1(A+0)=0.1101+0.01101=1.00111第 四 步 : 2-1 A+2-1 (A+0)=0.100111第 五 步 : 0A +2-1 A+2-1 (A+0) =0.100111第 六 步 : 2-10A+2-1 A+2-1 (A+0)=0.0100111第 七 步 : A+2-10A+2-1 A+2-1 (A+0)=1.0001111第 八 步 : 2 -1 A+2-10A+2-1 (A+2-1 (A+0) =0.10001111 笔 算 乘 法 规 则 乘 法 运 算 可 用 移 位 和 加 法 来 实 现 , 当 两 个 四 位 数相 乘 , 总 共 需 做 四 次 加 法 和 四 次 移 位 。 由 乘 数 的 末 位 值 确 定 被 乘 数 是 否 与 原 部 分 积 相 加 ,然 后 右 移 一 位 , 形 成 新 的 部 分 积 ; 同 时 , 乘 数 也 右移 一 位 , 由 次 低 位 作 新 的 末 位 , 空 出 最 高 位 放 部 分积 的 最 低 位 。 每 次 做 加 法 时 , 被 乘 数 仅 仅 与 原 部 分 积 的 高 位 相加 , 其 低 位 被 移 至 乘 数 所 空 出 的 高 位 位 置 。 计 算 机 很 容 易 实 现 这 种 运 算 规 则 : 用 一 个 寄 存 器 存 放被 乘 数 , 一 个 寄 存 器 存 放 乘 积 的 高 位 , 又 用 一 个 寄存 器 存 放 乘 数 及 乘 积 的 低 位 , 再 配 上 加 法 器 及 其 他相 应 电 路 , 就 可 组 成 乘 法 器 。 2. 原 码 一 位 乘 原 码 一 位 乘 运 算 规 则 原 码 一 位 乘 所 需 的 硬 件 配 置 原 码 一 位 乘 控 制 流 程 原 码 一 位 乘 运 算 规 则 以 小 数 为 例 , 设 x原 =x0.x1x2xn, y原 =y0.y1y2yn, 则 其 中 乘 积 的 符 号 通 过 两 数 符 号 的 逻 辑 异 或 求 得 。 乘 积 的 数 值 部 分 由 两 数 绝 对 值 相 乘 , 其 通 式 为 : ).0)(.0.(yx 212100 nn yyyxxxyx 原原 *21 *21 y.0 x.0 yyyy xxxx nn 的 绝 对 值 , 记 作为 的 绝 对 值 , 记 作为 原 码 一 位 乘 运 算 规 则 如 此 , 基 于 前 面 对 笔 算 乘 法 的 分 析 和 改 进 ,可 得 原 码 一 位 乘 的 运 算 方 法 。 例 已 知 : x=-0.1110, y=-0.1101; 求 : xy原 。 解 : x原 =1.1110, x*=0.1110, x0=1 y原 =1.1101, y*=0.1101, y0=1 即 x*y*=0.10110110 乘 积 的 符 号 位 为 x0和 y0的 异 或 , 即 0。 故 xy原 =0.10110110。部 分 积 乘 数 说 明 0.0000 + 0.1110 1101 开 始 部 分 积 z0=0乘 数 为 1, 加 上 x* 0.1110 0.0111 + 0.0000 0110 1位 得 z1,乘 数 同 时 1位乘 数 为 0, 加 上 0 0.0111 0.0011 + 0.1110 1011 1位 得 z2,乘 数 同 时 1位乘 数 为 1, 加 上 x* 1. 0001 0.1000+ 0.1110 1101 1位 得 z3,乘 数 同 时 1位乘 数 为 1, 加 上 x* 1.0110 0.1011 0110 1位 得 z4乘 数 已 全 部 移 出 原 码 一 位 乘 所 需 的 硬 件 配 置 原码一位乘控制流程 4. 补 码 乘 法 补 码 一 位 乘 运 算 规 则 校 正 法 比 较 法 ( Booth算 法 ) 补 码 Booth算 法 所 需 的 硬 件 配 置 补 码 Booth算 法 控 制 流 程 补 码 两 位 乘 补 码 一 位 乘 运 算 规 则 设 被 乘 数 x补 =x0.x1x2xn, 乘 数 y补 =y0.y1y2yn 两 个 引 理 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 正 时 , 有 : x y补 =x补 y补 = x补 (0.y1y2yn) 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 负 时 , 有 : x y补 =x补 y补 =x补 (0.y1y2yn)+-x补 补 码 一 位 乘 运 算 规 则 证 明 设 被 乘 数 x补 =x0.x1x2xn, 乘 数 y补 =y0.y1y2yn 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 正 时 , 有 : x y补 =x补 y补 =x补 y 证 明 : yxyxyx xyxyxyyyx yy yy yyyyy xyyyxyxyx yyyyy xxxxxxx n nni ini ni inin ni iin nnn nn 补补补补 补补补 补补补补补则根 据 模 运 算 的 性 质 , 有 的 正 整 数 , 则是 一 个 大 于 或 等 于又 ,则 ,由 于则 )2mod(22 )2mod(22 12 222 2.0 2)2( .0 )2mod(22. 1 11 11 121 1121 1210 补 码 一 位 乘 运 算 规 则 证 明 ( 续 ) 设 被 乘 数 x补 =x0.x1x2xn, 乘 数 y补 =y0.y1y2yn 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 负 时 , 有 : x y补 =x补 y补 =x补 (0.y1y2yn)+-x补证 明 : 补补补 补补 补补补 补 补补所 以 , 第 一 种 情 况 相 同 。视 为 一 个 正 数 , 正 好 与将 上 式 中 的则则 ).0( ).0().0( .0 ).0( ).0()1.0( 1.02.12 )2mod(2.1 . 21 2121 21 21 2121 2121 21 210 xyyyxyx yyyxyyyx yyy xyyyxyx xyyyxyyyxxy yyyyyyyy yyyyy xxxxx n nn n n nn nn n n 补 码 一 位 乘 运 算 规 则 ( 总 结 ) 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 正 时 , 有 : x y补 =x补 y补 =x补 y )(2 )(2 )(2 )(2 0 111 111 1112 0110 补补补补 补补补 补补补 补补补补 nn iini nn zxyzyx zxyz zxyz zxyzz 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 负 时 , 有 : x y补 =x补 y补 =x补 (0.y1y2yn)+-x补 补 码 一 位 乘 运 算 规 则 校 正 法 当 乘 数 y为 正 时 , 可 按 类 似 原 码 乘 法 的 规 则 进 行运 算 。 当 乘 数 为 负 时 , 把 乘 数 的 补 码 y补 去 掉 符 号 位 ,看 成 一 个 正 数 与 x补 相 乘 , 然 后 加 上 -x补 进 行校 正 。 按 补 码 进 行 运 算 按 补 码 的 规 则 进 行 移 位 : 右 移 补 1, 符 号 位 一 起 移 “ 乘 数 的 补 码 y 补 去 掉 符 号 位 , 当 成 一 个 正 数 与 x补 相乘 ” y仍 然 是 补 码 符 号 位 参 与 运 算 , 自 动 生 成 与 原 码 的 不 同 之 处 考 虑 到 运 算 时 可 能 出 现 绝 对 值 大 于 1的 情 形 ( 但此 刻 并 不 是 溢 出 ) , 故 部 分 积 和 被 乘 数 取 双 符 号位 。 例 已 知 : x补 =1.0101, y补 =0.1101, 求 : xy补 。 解 : 因 为 乘 数 y0, 不 用 校 正 。 故 乘 积 xy补 =1.01110001 部 分 积 乘 数 说 明 00.0000 + 11.0101 1101 初 值 z0补 =0Y4=1, +x补 11.0101 11.1010 1110 1位 , 得 z1补 , 乘 数 同 时 1位Y3=0, 不 加 x补 11.1101 + 11.0101 0111 1位 , 得 z2补 , 乘 数 同 时 1位Y2=1, +x补 11.0010 11.1001 + 11.0101 0011 1位 , 得 z 3补 , 乘 数 同 时 1位Y1=1, +x补 10.1110 11.0111 0001 1位 , 得 z4补注 意 : 符 号 位 参 加 运 算 ! 与 原 码 不 同 补 码 一 位 乘 比 较 法 ( Booth算 法 ) 现 在 广 泛 使 用 的 是 Booth算 法 , 也 称 为 比 较 法 , 其 运 算规 则 由 校 正 法 导 出 。 设 被 乘 数 x补 =x0.x1x2xn, 乘 数 y补 =y0.y1y2yn 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 正 时 , 有 : x y补 =x补 y补 =x补 y 被 乘 数 x符 号 任 意 , 乘 数 y的 符 号 为 负 时 , 有 : x y 补 =x补 y补 =x补 (0.y1y2yn)+-x补 综 合 和 , 被 乘 数 x符 号 任 意 , 乘 数 y符 号 任 意 , 有 : x y补 =x补 y补 =x补 (0.y1y2yn)- x补 y0前 提 : -x补 =-x补 补 码 一 位 乘 比 较 法 ( Booth算 法 )0 )2)(2)(2)()( )2)0(2)(2)()( )22()22()2( )222( )222( 1 1)1(111201 )1(111201 )1(22121110 22110 02211其 中 补补补补 补补补 n nnnnnn nnnnn nnnnnnnny yyyyyyyyx yyyyyyyx yyyyyyyx yyyyx yxyyyxyx 补补补补 补补补 补补补 补补补 补补补补 如 此 , 可 得 递 推 公 式 : )( )(2 )(2 )(2 )(2 0 011 1211 1211 1112 10110 xyyzzyx xyyzz xyyzz xyyzz xyyzzz nn nn ininii nn nn 补 码 一 位 乘 比 较 法 ( Booth算 法 ) 在 Booth算 法 中 , 操 作 的 方 式 取 决 于 表 达 式 (yi+1-yi)的 值 。 yi yi+1 yi+1- yi 操 作0 0 0 部 分 积 右 移 一 位0 1 1 部 分 积 加 x补 , 再 右 移 一 位1 0 -1 部 分 积 减 x 补 , 再 右 移 一 位1 1 0 部 分 积 右 移 一 位 例 已 知 : x补 =0.1101, y补 =0.1011, 求 : xy补 。 解 : 如 下 表 , 可 得 xy补 =0.10001111部 分 积 乘 数 yn 附 加 位 yn+1 说 明 00.0000 + 11.0011 01011 0 初 值 z0补 =0Ynyn+1=10, 部 分 积 加 -x补 11.0011 11.1001 11.1100 + 00.1101 1010111010 11 1位 , 得 z 1补Ynyn+1=11, 部 分 积 1位 得 z2补Ynyn+1=01, 部 分 积 加 x补 00.1001 00.0100 + 11.0011 1111101 0 1位 , 得 z3补Ynyn+1=10, 部 分 积 加 -x补 11.0111 11.1011 + 00.1101 11110 1 1位 , 得 z4补Y nyn+1=01, 部 分 积 加 x补 00.1000 1111 最 后 一 步 不 移 位 , 得 xy补 补 码 比 较 法 ( Booth算 法 ) 所 需 的 硬 件 配 置 补码一位乘比较法控制流程 除 法 运 算1. 分 析 笔 算 除 法2. 原 码 除 法 恢 复 余 数 法 加 减 交 替 法 原 码 加 减 交 替 法 所 需 的 硬 件 配 置 原 码 加 减 交 替 除 法 控 制 流 程3. 补 码 除 法 ( 不 讲 ) 恢 复 余 数 法 ( 少 用 ) 补 码 加 减 交 替 法 运 算 规 则 补 码 加 减 交 替 法 所 需 的 硬 件 配 置 补 码 加 减 交 替 除 法 控 制 流 程 1. 分 析 笔 算 除 法 以 小 数 为 例 , 设 x=-0.1011, y=0.1101, 求 x/y。 商 的 符 号 心 算 而 得 : 负 正 得 负 其 数 值 部 分 的 运 算 如 下 面 竖 式 所 以 商 x/y=0.1101, 余 数 =-0.00000111 分 析 笔 算 除 法 二 进 制 除 法 实 质 是 “ 作 被 除 数 ( 余 数 ) 和 除 数 的减 法 , 求 新 的 余 数 ” 的 过 程 每 次 上 商 都 是 由 心 算 来 比 较 余 数 (被 除 数 )和 除 数 的 大 小 ,确 定 商 为 1还 是 0。 每 做 一 次 减 法 , 总 是 保 持 余 数 不 动 , 低 位 补 0, 再 减 去右 移 后 的 除 数 。 商 符 单 独 处 理 。 主 要 问 题 : 机 器 不 能 “ 心 算 ” 上 商 。 按 照 每 次 减 法 总 是 保 持 余 数 不 动 低 位 补 0, 再 减 去 右移 后 的 除 数 这 一 规 则 , 则 要 求 加 法 器 的 位 数 必 须 为 除数 的 两 倍 。 笔 算 求 商 时 是 从 高 位 向 低 位 逐 位 求 的 , 而 要 求 机 器 把 每 位 商 直 接 写 到 寄 存 器 的 不 同 位 也 是 不 可 取 的 。 分 析 笔 算 除 法 解 决 办 法 : 机 器 不 能 “ 心 算 ” 上 商 必 须 通 过 比 较 被 除 数 (或 余 数 )和 除 数 绝 对 值 的 大 小 来 确 定 商 值 ,即 |x|-|y|, 若 差 为 正 (够 减 )上 商 1,差 为 负 (不 够 减 )上 商 0。 按 照 每 次 减 法 总 是 保 持 余 数 不 动 低 位 补 0, 再 减 去 右 移后 的 除 数 这 一 规 则 , 则 要 求 加 法 器 的 位 数 必 须 为 除 数的 两 倍 。 右 移 除 数 可 以 用 左 移 余 数 的 办 法 代 替 , 其 运 算 结 果 是 一 样 的 ,但 对 线 路 结 构 更 有 利 。 不 过 此 刻 所 得 到 的 余 数 不 是 真 正 的 余 数 ,只 有 将 它 乘 上 2 -n才 是 真 正 的 余 数 。 笔 算 求 商 时 是 从 高 位 向 低 位 逐 位 求 的 , 而 要 求 机 器 把每 位 商 直 接 写 到 寄 存 器 的 不 同 位 也 是 不 可 取 的 。 计 算 机 可 将 每 一 位 商 直 接 写 到 寄 存 器 的 最 低 位 , 并 把 原 来 的 部分 商 左 移 一 位 。 2. 原 码 除 法 恢 复 余 数 法 加 减 交 替 法 ( 不 恢 复 余 数 法 ) 原 码 加 减 交 替 法 所 需 的 硬 件 配 置 原 码 加 减 交 替 除 法 控 制 流 程 原 码 除 法 原 码 除 法 和 原 码 乘 法 一 样 , 符 号 位 是 单 独 处 理 的 。 以 小 数 为 例 , 设 式 中 为 x的 绝 对 值 , 记 作 x* 为 y的 绝 对 值 , 记 作 y* 即 商 符 由 两 数 符 号 位 “ 异 或 ” 运 算 求 得 , 商 值 由 两数 绝 对 值 相 除 (x*/y*)求 得 。 小 数 定 点 除 法 对 被 除 数 和 除 数 有 一 定 的 约 束 , 即 必须 满 足 条 件 : 0 |被 除 数 |除 数 | (一 )恢 复 余 数 法试 商 : 商 值 的 确 定 是 通 过 比 较 被 除 数 和 除数 的 绝 对 值 大 小 , 即 通 过 x*-y*实 现 的 : 如 果余 数 为 正 , 说 明 “ 够 减 ” , 商 上 “ ” ; 如果 余 数 为 负 , 说 明 “ 不 够 减 ” , 商 上 “ 0” 。由 于 不 够 减 而 减 了 , 必 须 将 除 数 加 回 去 ,恢 复 成 原 来 的 余 数 。机 器 内 只 设 加 法 器 , 故 需 将 x*-y*操 作 变 为x*补 +-y*补 的 操 作 。 因 此 , 在 判 断 “ 够 减 ” ,“ 不 够 减 ” 作 减 法 时 , 采 用 的 是 补 码 运 算 。 例 已 知 : x=-0.1011,y=-0.1101,求 : x/y原 解 : 由 x*=0.1011, x原 =1.1011 y*=0.1101, -y*补 =1.0011,y原 =1.1101 商 值 的 求 解 过 程 如 下 : 例 ( 续 ) 被 除 数 (余 数 ) 商 说 明 0.1011+ 1.0011 0.0000 +-y*补 ( 减 去 除 数 ) 1.1110+ 0.1101 0 余 数 为 负 , 上 商 0恢 复 余 数 +y*补 0.1011 1.0110+ 1.0011 0 被 恢 复 的 被 除 数 1位+-y*补 ( 减 去 除 数 ) 0.1001 1.0010+ 1.0011 0 1 0 1 余 数 为 正 , 上 商 1 1位+-y* 补 ( 减 去 除 数 ) 0.0101 0.1010+ 1.0011 0 1 1 0 1 1 余 数 为 正 , 上 商 1 1位+-y*补 ( 减 去 除 数 ) 1.1101+ 0.1101 0 1 1 0 余 数 为 负 , 上 商 0恢 复 余 数 +y*补 0.1010 1.0100+ 1.0011 0 1 1 0 被 恢 复 的 被 除 数 1位+-y*补 ( 减 去 除 数 ) 0.0111 0 1 1 0 1 余 数 为 正 , 上 商 1 例 ( 续 ) 故 商 值 为 0.1101 商 的 符 号 位 为 商 的 位 数 与 操 作 数 的 位 数 相 同 时 , 或 余 数 为 0时 ,停 止 计 算 该 例 中 , 共 上 商 5次 第 一 次 上 的 商 在 商 的 整 数 位 上 , 对 小 数 除 法 而 言 ,可 用 它 作 溢 出 判 断 。 即 当 该 位 为 “ 1”时 , 表 示 此 除 法 为 溢 出 , 不 能 计 算 进 行 ,应 由 程 序 进 行 处 理 , 重 新 选 择 比 例 因 子 ; 当 该 位 为 “ 0”时 , 说 明 除 法 合 法 , 可 以 进 行 计 算 。 在 恢 复 余 数 法 中 , 每 当 余 数 为 负 时 , 都 需 恢 复 余 数 ,这 就 延 长 了 机 器 除 法 的 时 间 , 操 作 也 很 不 规 则 , 对线 路 结 构 不 利 。 (二 )加 减 交 替 法 根 据 原 码 恢 复 余 数 法 , 有 : 当 余 数 Ri0时 , 可 上 商 “ 1”, 再 对 Ri左 移 一 位 后减 除 数 , 即 2Ri-y*。 当 余 数 Ri0时 , 商 上 “ 1”, 做 2Ri-y*的 运 算 ;当 余 数 Ri0时 , 商 上 “ 0”, 做 2Ri+y*的 运 算 。 这 里 已 看 不 出 余 数 的 恢 复 问 题 了 , 而 只 是 做加 y*或 减 y*, 因 此 , 一 般 把 它 叫 做 加 减 交 替法 或 不 恢 复 余 数 法 。 例 已 知 x=-0.1011,y=0.1101,求 : x/y原 解 : 由 x*=0.1011, x原 =1.1011 y*=0.1101, -y补 =1.0011, y原 =0.1101 商 值 的 求 解 过 程 如 下 : 例 ( 续 )被 除 数 (余 数 ) 商 说 明 0.1011+ 1. 0011 0.0000 +-y*补 ( 减 除 数 ) 1.1110 1.1100+ 0.1101 0 0 余 数 为 负 , 上 商 0 1位+y*补 (加 除 数 ) 0.1001 1.0010+ 1.0011 0 1 0 1 余 数 为 正 , 上 商 1 1位+-y* 补 ( 减 除 数 ) 0.0101 0.1010+ 1.0011 0 1 1 0 1 1 余 数 为 正 , 上 商 1 1位+-y*补 ( 减 除 数 ) 1.1101 1.1010+ 0.1101 0 1 1 0 0 1 1 0 余 数 为 负 , 上 商 0 1位+y*补 (加 除 数 ) 0.0111 0 1 1 0 1 余 数 为 正 , 上 商 1 例 ( 续 ) 商 的 符 号 位 为 所 以 x/y原 =1.1101 分 析 此 例 可 见 , n位 小 数 的 除 法 共 上 商 n+1次 ,第 一 次 商 用 来 判 断 是 否 溢 出 。 倘 若 比 例 因 子 选 择 恰 当 , 除 数 结 果 不 溢 出 ,则 第 一 次 商 肯 定 是 0。 如 果 省 去 这 位 商 , 只需 上 商 n次 即 可 , 此 时 除 法 运 算 一 开 始 应 将被 除 数 左 移 一 位 减 去 除 数 , 然 后 再 根 据 余 数上 商 。 原 码 加 减 交 替 法 所 需 的 硬 件 配 置 被 除 数 字 长 可 以 是 除 数 的 两 倍 , 开 始 时 其 低 位 放 在 Q中 , 逐 步 左 移 到 A中 被 除 数除 数 1: y0: y 原码加减交替除法控制流程 整 数 除 法 算 法 与 小 数 除 法 相 同 初 始 条 件0|除 数 |=|被 除 数 | 小 结 移 位 算 术 移 位 、 逻 辑 移 位 加 、 减 补 码 溢 出 判 断 ( 1位 符 号 位 、 两 位 符 号 位 ) 乘 原 码 一 位 乘 补 码 ( 校 正 法 、 比 较 法 ( Booth法 ) ) 除 原 码 ( 恢 复 余 数 法 、 不 恢 复 余 数 法 ( 加 减 交 替 法 ) ) 补 码 ( 加 减 交 替 法 )
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!