




已阅读5页,还剩165页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理 主讲教师 赵岚 第二章运算方法和运算器 数据信息的表示方法定点加 减法运算定点乘法运算定点除法运算定点运算器的组成与结构浮点运算方法和浮点运算器 一 计算机中的信息表示 掌握 数制及其转换 码制及其转换 定 浮点数表示方法及标准格式 2 1数制与转换 数据信息分为 数值数据和非数值数据 数值数据指该数据有确定的数值 表示数值数据的三要素 小数点 进位计数制和符号 非数值数据是指文字 符号等 数制中所使用的数码的个数称为 基数 r 某数制的数中每一位所具有的值称为 权 ri进位计数制人用符号计数的科学方法二进制八进制十进制十六进制二 十进制 BCD码 数制数码进位方法基数二0 1逢2进12八0 7逢8进18十0 9逢10进110十六0 9 A F逢16进116 数制间转换原则 整数变整数 小数变小数 十进二进整数部分 除2取余倒排 直到商为0 小数部分 乘2取整 直到小数位为0 例 13 8125 10 13 8125 10首先 转换整数部分1321326123021101结果 1101然后 转换小数部分 81250 8125 2 1 62510 625 2 1 2510 25 2 0 500 5 2 1 01小数结果 0 1101综合结果为 13 8125 10 1101 1101 2 二进 八进 十六进十进按N展开式求和例 11001 101 2 27451 12 8 2AD 1C 16 11001 101 2 0 27451 12 8 2AD 1C 16 二进十六进以小数点为中心分界每4位分为一段 不足补0每一段用相应的十六进制数取代例 1101110 01011 2注 如果转换为八进制 则每3位分一段即可然后每一段用相应的八进制数取代 1101110 01011 2 1601101110 01011000 1101110 01011 2 8001101110 010110156 26 6E 58 思考 十六进制和八进制数如何转换成为二进制数 2 数据在计算机中的表示 所谓编码 就是用少量简单的基本符号 选用一定的组合规则 以表示出大量复杂多样的信息 常用的信息分为 定点数 fixed point 数值信息浮点数 floating point 字符 character 非数值信息汉字 Chinesecharacter逻辑数据 logicaldata 字符编码 用一定位数的二进制数 0 和 1 进行编码给出 常用的字符编码ASCII AmericanStandardCodeforInformationInterchange 码 ASCII码是美国信息交换标准代码 包括0 9十个数字 大小写英文字母及专用符号等95种可打印字符 另有33不可打印字符 被用于控制码 中文编码汉字输入码 为便于汉字进行输入时的编码 将汉字代码化 汉字机内码 用于汉字信息的存储 交换 检索等操作的机内代码 一般用两个字节表示 汉字字型码 汉字输出时的编码 用点阵表示 数值信息的编码 在选择计算机数值信息的表示方式时需要考虑的主要因素有以下几点 要表示的数的类型 可能遇到的数值范围 数值精确度 数据存储和处理所需要的硬件代价 数值数据 真值与机器数 对二进制来说 真值与机器数的区别主要在符号的表示方法上 数值前正号用 表示 负号用 表示的数称为真值 数值前正号用 0 表示 负号用 1 表示的数称为机器数 如 真值 0 1011 0 0010机器码 原码 0 10111 0010 数值数据 数的机器码表示 在计算机中对数据进行运算操作时 符号位如何表示呢 是否也同数值位一道参加运算操作呢 为了妥善的处理好这些问题 就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法 如原码 补码 反码 移码等 通常将前者称为真值 后者称为机器数或机器码 数值数据 原码表示法 定点小数X表示 Ns N1N2 Nn定义 X 原 定点整数X表示 NsN1N2 Nn定义 X 原 X 0 X 1 1 X 1 X 0 X 0 X 2n 2n X 2n X 0 数值数据 原码表示法 实例 X1 0 10110 0 101100 0000 X 原 0 101101 101100 00001 0000实例 X1 10110 101100000 X 原 0101101101100000010000 数值数据 原码表示法 性质 原码为符号位加上数的绝对值 0正1负原码零有两个编码 0和 0编码不同原码难以用于加减运算 但乘除方便N 1位二进制原码所表示的范围为 小数 MAX 1 2 n MIN 1 2 n 整数 MAX 2n 1 MIN 2n 1 数值数据 原码表示法 原码的优点是 简单易懂 缺点是 难以用于加减运算 原因是 如果是异号相加 则要进行减法运算 首先要比较绝对值的大小 然后大数减小数 最后确定符号 为了便于加减运算 采用了补码表示 数值数据 补码表示法 补码是在 模 和 同余 的概念下导出的 模 是指一个计量系统的计量范围 即产生 溢出 的量 在计算机中 机器能表示的数据位数是一定的 其运算都是有模运算 如果是n位整数 其模为2n 如果是n位小数 其模为2 若运算结果超出了计算机所能表示的数值范围 则只保留它的小于模的低n位的数值 超过n位的高位部分就自动舍弃了 数值数据 补码表示法 定义 任意一个X的补码为 X 补 可以用该数加上其模M来表示 X 补 X M 数值数据 补码表示法 定点小数表示 Ns N1N2 Nn定义 X 补 MOD2 定点整数表示 NsN1N2 Nn定义 X 补 MOD2n 1 X 2 X 0 X 1 1 X 0 X 2n 1 X 0 X 2n 2n X 0 数值数据 补码表示法 实例 X1 0 10110 0 101100 0000 X 补 0 101101 010100 0000实例 X1 10110 101100000 X 补 01011010101000000 数值数据 补码表示法 由于正数的补码就是正数本身 故着重讲解负数求补码的方法 负数求补码 数值数据 补码表示法 1 由定义求例 X 补 2 X 10 0 1101001 1 0010111 数值数据 补码表示法 例 X 1101001解 X 补 28 X 100000000 1101001 10010111 反过来 由补码求真值 只要将公式进行交换即可 数值数据 补码表示法 2 由原码求补码除符号位以外 其余各位求反 末位加1 例 X 0 0101011解 X 原 10101011 X 补 1 1 1 1 0 0 0 0 1 11010101 由补码求原码 此规则同样适用 数值数据 补码表示法 由原码求补码的简便原则 从最低位开始遇到的第一个1以前的各位保持不变 其余各位除符号位以外 其它按位取反 例 X 原 110110100 X 补 101001 100 100 由 X 补求 X 补 此规则同样适用 数值数据 补码表示法 3 由 X 补求 X 补 连符号位一起各位求反 末位加1 例 X 补 1 1010101解 X 补 11010101 X 补 0 0 0 0 1 1 1 0 1 00101011 数值数据 补码表示法 性质 0的补码是唯一的补码便于加减运算n 1位补码所能表示的数的范围 小数 MAX 1 2 n MIN 1整数 MAX 2n 1 MIN 2n 数值数据 补码表示法 补码便于加减运算 因为不论正 负数它只需要做加运算 但负数的求补需要做一次加运算 显然有不方便 为此又引入了反码 数值数据 反码表示法 定点小数表示 Ns N1N2 Nn定义 X 反 定点整数表示 NsN1N2 Nn定义 X 反 X 2 2 n X 0 X 1 1 X 0 X 0 X 2n 2n 1 1 X 2n X 0 数值数据 反码表示法 由原码求反码 如果X为正数 则 X 反 X 原 如果X为负数 则将 X 原除符号位以外 每位都变反 可得到 X 反 实例 X1 0 10110 0 101100 0000 X 原 0 101101 101100 00001 0000 X 反 0 010011 010010 00001 1111 数值数据 反码表示法 X 反 2 X 2 n X 补 2 X所以当x的真值为负数时 有 X 补 X 反 2 n 数值数据 移码表示法 对于n 1位数x0 x1x2 xn定义 X 移 2n x 由于移码是在原值X上加一个2n 所以也称为增码 因此 符号为1时 表示正数 符号为0时 表示负数 例如 X 1101010 则 X 补 01101010 X 移 27 X 11101010 2n X 2n 数值数据 移码表示法 例如 X 1101010 则 X 补 28 X 10010110 X 移 27 X 00010110结论 由 X 补求 X 移 只要将 X 补的符号位变反 就可得到 X 移 数值数据 移码表示法 零的移码是唯一的 即 0 移 0 移 100 00性质 若 X1 移 X2 移 则有X1 X2 浮点数的阶码常用移码来表示的原因 就是用到了该性质 练习 请写出下列各数的原码 反码 补码 移码 1 1011001 2 1000101 3 0 01011 四种码制的比较 1 移码最高位为 0 表示负数 最高位为 1 表示正数 这与原码 补码 反码的符号位正好相反 2 原码 补码 反码对于正数 它们都等于真值本身 而对于负数各有不同的表示 3 最高位都表示符号位 补码 反码和移码的符号位可作为数值位的一部分看待 和数值位一起参加运算 但原码的符号位不允许和数值位同等看待 必须分开进行处理 4 对于真值0 原码和反码各有两种不同的表示形式 而补码 移码是唯一的 例1 以n 1定点整数为例 用数轴形式说明原码 反码 补码表示范围和可能的数码组合情况 例2 将十进制真值 127 1 0 1 127 列表表示成二进制数及原码 反码 补码 移码值 解 二进制真值 及其诸码值列于下表 其中0在 原 反中有两种表示 由表中数据可知 补码值与移码值差别仅在于符号位不同 数值数据 定点数的表示方法 定点表示 约定机器中所有数据的小数点位置是固定不变的 由于约定在固定的位置 小数点就不再使用记号 来表示 通常将数据表示成纯小数或纯整数 定点数x x0 x1x2 xn在定点机中表示如下 0为符号位 0代表正号 1代表负号 纯小数的表示范围为 x0 x1x2 xn各位均为0时最小 各位均为1时最大 0 1 2 n纯整数的表示范围为0 2n 1 例3 设机器字长16位 定点表示 尾数15位 数符1位 问 1 定点原码整数表示时 最大正数是多少 最小负数是多少 2 定点原码小数表示时 最大正数是多少 最小负数是多少 解 1 定点原码整数表示最大正数值 215 1 10 32767 100111111111111111最小负数值 215 1 10 32767 101111111111111111 2 定点原码小数表示最大正数值 1 2 15 10 0 111 11 2最小负数值 1 2 15 10 0 111 11 2 例 若为定点整数 采用一位符号位 如果寄存器中的内容为10000001 当它分别表示原码 补码 反码 移码和无符号数时 问对应的真值为多少 解 原码的真值为 补码的真值为 反码的真值为 移码的真值为 无符号数的真值为 1 127 126 1 129 数值数据 浮点数表示法 定义 任意一个R进制都可以通过移动小数点的位置写成N RE M式中 R是基数 可以取2 8 16 一旦定义则不能改变 是隐含的 M是尾数 为纯小数 表示数N的有效数字位数 决定了浮点数的精度 E是阶码 为纯整数 指出小数点在该数中的位置 决定了浮点数的大小 由于阶码可以取不同的数值 所以 小数点的位置是不确定的 因而称之为浮点数 数值数据 浮点数表示法 由于基数在系统中是隐含约定的 不需要用代码表示 所以浮点数只需用一对定点数 阶码和尾数 表示 其中 符号表示数的正负 阶码表示小数点的位置 而尾数表示有效数字 数值数据 浮点数表示法 数的表示范围 设m和n分别表示阶码和尾数的位数 均不包含符号位 阶码和尾数均用原码表示 则浮点数的表示范围是 22m 1 1 2 n N 22m 1 1 2 n 思考 如果尾数和阶码各用补码表示 则浮点数的表数范围如何 数值数据 浮点数表示法 最大正数为 最小负数为 最小正数为 最大负数为 数值数据 浮点数表示法 规格化定义 所谓规格化数 就是非0的尾数 其绝对值应大于或等于0 5 判别方法 原码规格化后 正数为0 1 的形式负数为1 1 的形式 补码规格化后 正数为0 1 的形式负数为1 0 的形式 数值数据 浮点数表示法 规格化 存储在计算机中的浮点数以及运算结果的浮点数都应为规格化数 如果尾数不是规格化数 要用修改阶码同时尾数移位的方法把他变为规格化数 这种处理过程 称为规格化 例题 设浮点数字长16位 其中阶码5位 含1位阶符 尾数11位 含1位数符 将十进制数13 128写成二进制定点数和浮点数 并分别写出定点和浮点的机器码形式 解 令x 13 128则其二进制形式为 x 0 0001101000定点数表示为 x 0 0001101000浮点数规格化表示为 x 0 1101000000 2 11 定点运算器 定点加减法 补码的加法运算任意两个数的补码之和 等于该两数和的补码 X 补 Y 补 X Y 补两个数不管正负 均用补码表示 符号位应当作为数值位参加运算 符号位相加所产生的进位要丢掉 结果为补码 加法公式的证明 现分四种情况来证明 假设采用定点小数表示 因此证明的先决条件是 1 1 1 1 0 0 则 0 由补码定义可得 补 补 补 mod2 2 0 0 则 0或 0 相加的两数一个为正 一个为负 因此相加结果有正 负两种可能 根据补码定义 加法公式的证明 补 补 2 补 补 2 2 当 0时 2 2 进位2必丢失 又因 0 故 补 补 补 mod2 当 0 则 0或 0 这种情况和第2种情况一样 把 和 的位置对调即得证 加法公式的证明 4 0 0 则 0 相加两数都是负数 则其和也一定是负数 补 2 补 2 补 补 2 2 2 2 2 x y所以 补 补 2 补 mod2 至此我们证明了 在模2意义下 任意两数的补码之和等于该两数之和的补码 这是补码加法的理论基础 其结论也适用于定点整数 定点运算器 定点加减法 例 X 0 1011Y 0 0101 求X Y 解 X 补 0 1011 Y 补 1 1011 0 1 1 0 10 丢掉 1 X 补 Y 补 0 0110X Y 0 0110 定点运算器 定点加减法 例 X 11001 Y 00011 求X Y 解 X 补 100111 Y 补 111101 0 0 1 0 11 丢掉 1 X 补 Y 补 100100X Y 11100 0 定点运算器 定点加减法 补码的减法 X Y 补 X 补 Y 补 X Y 补 X 补 Y 补 Y 的补码称为 Y 补的机器负数 由 Y 补求 Y 补的过程称为将 Y 补 变补 或对 Y 补求补 由 Y 补求 Y 补的方法是 不管Y的真值为正或为负 都是将 Y 补的各位连同符号位在内全变反后 最低位加1 下面证明 Y 补 Y 补 x y 补 x 补 y 补 mod2 y 补 x y 补 x 补 a 又 x y 补 x y 补 x 补 y 补 y 补 x y 补 x 补 b 将 a b 两式相加得 y 补 y 补 x y 补 x 补 x y 补 x 补 x y 补 x y 补 x 补 x 补 x y x y 补 x 补 x 补 x x 补 x 补 x 补 0 y 补 y 补 定点运算器 定点加减法 例 X 0 1011Y 0 0110 求X Y 解 X 补 1 0101 Y 补 0 0110 1 0 0 1 1 11 X Y 补 1 1001X Y 0 0111 用补码运算完成下列各题 并讨论结果是否正确 1 已知x 0 1001y 0 1011求 x y 补 2 已知x 1000010y 1001101求 x y 补 定点运算器 溢出及判别 溢出及其判别方法 在计算机中定点数的表示范围是有限的 若两数进行加减运算的结果超出了给定的取值范围 就称为溢出 一旦出现溢出 必须及时处理 否则会出现错误 可以采用两种方法来判别是否产生溢出 单符号位法 双符号位法 定点运算器 溢出及判别 采用单符号位的判断方法两异号数相加或两同号数相减决不会产生溢出 仅当两同号数相加或两异号数相减时才有可能产生溢出 两同号数相加时 如果结果的符号与参与运算的操作数符号相反 则表明有溢出 两异号数相减时 如果结果的符号与被减数的符号相反 则表明有溢出 定点运算器 溢出及判别 利用进位值的判断方法两补码数进行加减运算时 若最高数值位产生向符号的进位而符号位不产生进位时 发生正溢出 若最高数值位无进位而符号位有进位时 发生负溢出溢出判别的逻辑表达式为 V Cf C0 定点运算器 溢出及判别 例 X 0 100Y 0 101 求X Y 解 X 补 1 100 Y 补 1 011 1 1 1 10 丢掉 两负数相加 结果应为负数 但运算结果为正数 表明有溢出发生 定点运算器 溢出及判别 例 X 100 Y 11 求X Y 解 X 补 0100 Y 补 0110 0 1 1 一个正数减去一个负数 结果为正数 但计算结果为负数 表明有溢出发生 出错 0 定点运算器 溢出及判别 采用双符号位的判断方法每个操作数的补码符号用两个二进制数表示 称为变形补码 用 00 表示正数 11 表示负数 左边第一位叫第一符号位 右边第一位称为第二符号位 两个符号位同时参加运算 如果运算结果两符号位相同 则没有溢出发生 如果运算结果两符号位不同 则表明产生了溢出 10 表示负溢出 说明运算结果为负数 01 表示正溢出 说明运算结果为正数 溢出判别的逻辑表达式为 V Sf1 Sf2 溢出及判别举例 例 0 1100 0 1000 求 解 补 00 1100 补 00 1000 补00 1100 补00 100001 0100两个符号位出现 01 表示已溢出 即结果大于 1 溢出及判别举例 例 0 1100 0 1000 求 解 补 11 0100 补 11 1000 补11 0100 补11 100010 1100两个符号位出现 10 表示已溢出 即结果小于 1 练习 请分别用单 双符号形式计算下列各题 并判断是否溢出及给出溢出类型 1 已知X 0 1011Y 0 0111求X Y 2 已知X 0 1011Y 0 0111求X Y 基本的二进制加法 减法器 根据真值表 可以写出一位全加器的逻辑方程 Si Ai Bi CiCi 1 AiBi BiCi CiAi按此表达式组成的一位全加器如下图所示 一位全加器的真值表 基本的二进制加法 减法器 一位全加器的逻辑实现 基本的二进制加法 减法器 Si Ai Bi Ci的推导显而易见 下面推导Ci 1 AiBi BiCi CiAi将用到如下定律 1 摩根定律 2 吸收律 基本的二进制加法 减法器 基本的二进制加法 减法器 第三个与非门的输出即为Ci 1 基本的二进制加法 减法器 行波进位的补码加法 减法器 P31图2 3的行波进位的补码加法 减法器 为什么叫行波进位a3a2a1a0 b3b2b1b0s3s2s1s0 如何完成减法运算A B运算转化成 A 补 B 补运算 求补过程由B变反 1来实现 行波进位的补码加法 减法器 如何进行溢出检测处理 请思考 延迟时间的计算考虑溢出 ta n 2T 9T不考虑溢出时ta n 1 2T 9T2T即每一位的进位延迟9T包括 溢出的异或门为3T 最下的一排异或门为3T FA内部Ai和Bi输入的异或门为3T 故共9T 定点运算器 定点原码一位乘法 定点原码一位乘法设被乘数 X 原 XfXn 1Xn 2 X1X0乘数 Y 原 YfYn 1Yn 2 Y1Y0乘积 X 原 ZfZ2n 1Z2n 2 Z1Z0运算原则 同号相乘为正 异号相乘为负 符号可按 异或运算得到 数值部分的运算方法与普通的十进制乘数相类似 不论真值的正负 尾数都用正数参加运算 定点运算器 定点原码一位乘法 手工算法 0 1101 0 1011 1101 1101 0000 1101 10001111 0 l两个n位数相乘 其积为2n位 则需要2n位长的加法器 这不适用于定点机的形式 l机器一次只能进行两个数的相加 不能进行多个数据的加法 定点运算器 定点原码一位乘法 定点原码一位乘法运算法则 计算机中执行乘法时 积的符号位由被乘数和乘数的符号位通过一个异或门实现 数值部分的运算规则是 从最低位Y0开始 当乘数Yi为1时 将上次部分积加上被乘数的绝对值 然后右移一位 得到新的部分积 当Yi为0时 将部分积直接右移一位 得到新的部分积 重复 加 右移 操作N次 可得到最后的乘积 定点运算器 定点原码一位乘法 例 X 0 1101 Y 0 1011 求X Y 解 部分积乘数说明 00 0000 00 1101 Yf1011 00 1101 00 0110 00 1101 01 0011 00 1001 00 0000 00 1001 00 0100 00 1101 01 0001 00 1000 1Yf101 11Yf10 111Yf1 1111Yf Z0 0 Y0 1 X Y1 1 X Y2 0 0 Y3 1 X 右移 得Z1 右移 得Z2 右移 得Z3 右移 得Z4 X Y 定点运算器 定点原码一位乘法 结果 X Y 0 10001111 定点运算器 定点原码一位乘法 原码一位乘法的逻辑电路图 定点运算器 定点原码一位乘法 存放部分积 2存放被乘数 存放乘数 一 R0清零 R2存放被乘数 R1存放乘数 乘法开始时 启动 信号时序控制 置 于是开启时序脉冲 当乘数寄存器 最末位为 时 部分积 和被乘数 在加法器中相加 其结果输出至 的输入端 一旦打入控制脉冲 到来 控制信号 使部分积右移 位 与此同时 乘数寄存器 也在控制信号 作用下右移一位 且计数器 记数一次二 上述步骤重复执行n次三 当计数器 n时 计数器 的溢出信号使控制触法器 置 关闭时序脉冲 乘法宣告结束 定点运算器 定点原码一位乘法 原码算法存在的缺点 一 符号位需要单独运算 最后给出运算结果的正确符号 二 对于采用补码存储的数 从存储器中取出的是操作数的补码 需先将其转换成原码 这样很不方便 而且影响速度 定点运算器 定点补码一位乘法 定点一位补码乘法 补码乘法的特点是乘数 被乘数用补码表示 符号位参加运算 希望得到的结果就是乘积的补码 符号位在运算中形成 但是与补码加减法不同 两数的补码如果直接相乘 结果不是乘积的补码 设被乘数 X 补 0 1 2 3 和乘数 补 0 1 2 均为任意符号 则有补码乘法算式 这就是有名的布斯公式 定点运算器 定点补码一位乘法 X Y 补 X 补 Y X 补 YS Y12 1 Y2 2 2 Yn2 n X 补 YS Y1 Y12 1 Y22 1 Y22 2 YN2 n 1 Yn2 n X 补 Y1 YS Y2 Y1 2 1 Yn Yn 1 2 n 1 0 Yn 2 n X 补 Y1 YS 2 1 X 补 Y2 Y1 2 1 X 补 Y3 Y2 2 1 X 补 Yn Yn 1 2 1 X 补 Yn 1 Yn Yn 1 0 定点运算器 定点补码一位乘法 递推公式为 P0 补 0 P1 补 2 1 P0 补 Yn 1 Yn X 补 P2 补 2 1 P1 补 Yn Yn 1 X 补 Pi 补 2 1 Pi 1 补 Yn i 2 Yn i 1 X 补 Pn 补 2 1 Pn 1 补 Y2 Y1 X 补 Pn 1 补 Pn 补 Y1 Ys X 补 X Y 补 定点运算器 定点补码一位乘法 补码一位乘法的运算规则如下 开始时yn 1 0 1 如果yn yn 1 部分积 zi 加0 再右移1位 2 如果ynyn 1 01 部分积加 x 补 再右移1位 3 如果ynyn 1 10 部分积加 x 补 再右移1位这样重复n 1步 最后一步不移位 定点运算器 定点补码一位乘法 例 X 补 0 1101 Y 补 0 1011 求X Y 解 部分积乘数说明 00 0000 0 10110 Yn 1 0 11 0011 YnYn 1 10 加 X 补 11 0011 11 1001 1 01011 右移一位 00 0000 YnYn 1 11 加0 11 1001 11 1100 110101 右移一位 00 1101 YnYn 1 01 加 X 补 00 1001 00 0100 111010 右移一位 11 0011 11 0111 YnYn 1 10 加 X 补 11 1011 111101 右移一位 00 1101 YnYn 1 01 加 X 补 00 1000 111101 最后一次不移位 定点运算器 定点补码一位乘法 结果 X Y 补 0 10001111 定点运算器 定点补码一位乘法 定点运算器 定点补码一位乘法 被乘数的符号 和乘数的符号 都参加运算 乘数寄存器 有附加位 其初始状态为 当乘数和部分积每次右移时 部分积最低位移至 的首位位置 故 必须是具有右移功能的寄存器 被乘数寄存器 的每一位用原码或反码经多路开关传送到加法器对应位的一个输入端 而开关的控制信号由 的输出译码器产生 当 0 时 送 补 当 时 送 补 即送 的反码且在加法器最末位加上 保存部分积 它也是具有右移功能的移位寄存器 其符号位与加法器符号位始终一致 当计数器 时 封锁 和 控制信号 使最后一步不移位 定点运算器 定点原码一位除法 定点原码一位除法在定点计算机中 完成两个原码表示的数相除时 商的符号由两数的符号位按位异或得到 而商的数值部分则是两个正数相除得到 设被除数 X 原 Xf X1X2 Xn除数 Y 原 Yf Y1Y2 Yn则商 Q 原 Xf Yf X1X2 Xn Y1Y2 Yn 定点除法 定点原码一位除法 计算机中执行除法时 商的符号位由被除数和除数的符号位通过一个半加器实现 对于数值部分 由于定点小数的绝对值小于1 如果被除数大于或等于除数 则商就大于或等于1 因而会产生溢出 这是不允许的 因此在执行除法以前 先要判别是否溢出 不溢出时才执行除法运算 判别溢出的方法是被除数减去除数 若差为正 就表示溢出 定点运算器 定点原码一位除法 手工计算除法的方法 设被除数为X 0 1001 Y 0 1011 求X Y 定点运算器 定点原码一位除法 0 11010 10110 10010被除数 0 01011除数右移1位 减除数 商上10 001110得余数r1 0 001011除数右移2位 减除数 商上10 0000110得余数r20 0001011除数右移3位 不减除数 商上00 00001100得余数r3 0 00001011除数右移4位 减除数 商上10 00000001得余数r4 X Y 0 1101 余数 0 0001 2 4 原码一位除法 恢复余数法 恢复余数法的运算规则 计算机中进行除法时 是模仿十进制除法笔算的过程 但又不能完全照搬 在机器中判断是否够减 必须先做减法 若余数为正 表示够减 若余数为负 表示不够减 不够减时 必须恢复原来的余数 以便再继续往下运算 这种方法称为恢复余数法 要恢复原来的余数 只要当前的余数加上除数即可 原码一位除法 恢复余数法 恢复余数法的缺点 当某一次减Y的差值为负时 要多一次加Y恢复余数的操作 降低了执行速度 又使控制线路变得复杂 因此在计算机中很少采用 运算的步骤无法确定 原码一位除法 加减交替法 加减交替法的规则 首先作X Y 余数为正 表明产生溢出 应终止除法运算 余数为负 上商为0 作为商的符号位 然后重复下述操作n次 可得商的n位数值余数为正时 商为1 余数左移一位 减除数 余数为负时 商为0 余数左移一位 加除数 由于运算中余数共左移了n次 相当于乘2n 故最后得余数应乘上2 n才是真正的正确余数 余数符号与被除数相同 原码一位除法 加减交替法 解 X 原 X 补 X 0 1001 Y 补 0 1011 Y 补 1 0101被除数X 余数r商数q说明 00 1001 11 0101 11 1110 11 1100 00 1011 00 0111 00 1110 11 0101 00 0011 00 0110 11 0101 11 1011 11 0110 00 1011 00 0001 Y 补 Y 补 Y 补 Y 补 Y 补 0 0 1 0 11 0 110 0 1101 X减Y 余数r0为负 余数r1为正 余数r2为正 余数r3为负 余数r4为正 商0 r和q左移一位 商1 r和q左移一位 商1 r和q左移一位 商0 r和q左移一位 加Y 减Y 减Y 加Y 商1 仅q左移一位 原码一位除法 加减交替法 Q 0 1101R 2 4 0 0001 结果 原码一位除法 加减交替法 原码一位除法 加减交替法 寄存器为n位 是双向移位寄存器 R0为双向移位寄存器 除法开始前R1可存放被除数的低n位 R0保存被除数或者余数 在进商左移的过程中 被除数 余数 的低位部分由 串行移至 经n 步后 求得n 位商 每次进商置于R1的最末位 由加法器符号位 f来设置 运算结束后R1存放n位的商 R0中存放余数 补码一位除法 加减交替法 补码加减交替除法的算法规则如下 1 被除数与除数同号 被除数减去除数 被除数与除数异号 被除数加除数 2 余数和除数同号 商上1 余数左移一位 余数减去除数得新余数 当余数和除数异号 商上0 余数左移一位 余数加除数得新余数 3 重复步骤 2 包括符号位在内 共做n 1步 为了统一并简化控制线路 一开始上一次假商 如果 x 补和 y 补同号 假商上1 正好控制下一次做减法 如果 x 补和 y 补异号 假商上0 正好控制下一次做加法 补码一位除法 加减交替法 商的校正 在没有特殊精度要求的情况下 一般就采用商的未位 恒置1 的方式进行舍入 这样简单 便于实现 如果要提高精度要求 可采用如下校正方法对商进行处理 1 刚好解除尽时 如果除数为正 商不必校正 如果除数为负 则商加2 n 最低位加1 2 不能除尽时 如果商为正 则不必校正 如果商为负 则商加2 n 补码一位除法 加减交替法 余数的校正 1 若商为正 则余数与被除数异号时 将余数加上除数得正确的余数 2 若商为负 则余数与被除数异号时 余数需减去除数得正确余数 余数之所以需要校正 是因为在补码不恢复余数除法处理过程中先比较后上商的缘故 补码一位除法 加减交替法 补码一位除法的流程图 补码一位除法 加减交替法 例 X 0 1001 Y 0 1011 求 X Y 补解 X 补 0 1001 Y 补 0 1011 Y 补 1 0101 补码一位除法 加减交替法 解 X 补 0 1001 Y 补 0 1011 Y 补 1 0101被除数 余数商数说明 00 1001 11 0101 11 1110 11 1100 00 1011 00 0111 00 1110 11 0101 00 0011 00 0110 11 0101 11 1011 11 0110 00 1011 00 0001 00 0001 Y 补 Y 补 Y 补 Y 补 Y 补 1 10 101 1011 10110 0 1101 X 补和 Y 补同号 q0 1 减除数 加除数 减除数 减除数 加除数 余数和除数异号 余数和除数同号 余数和除数同号 余数和除数异号 余数和除数同号 左移1位 商1 左移1位 商1 左移1位 商0 左移1位 商1 左移1位 商0 补码一位除法 加减交替法 Q 补 0 1101 R 补 0 0001 2 4 结果 课堂作业 1 已知X 0 11001 Y 0 00111 试用但符号位求X Y 并判断结果是否溢出 2 已知X 0 0100 Y 0 1001 试用补码运算方法求X Y 并判断结果是否溢出 3 已知X 0 1101 Y 0 1011 试用原码一位乘法求4 已知X 0 1010 Y 0 0110 试用补码一位乘法求5 已知X 0 10110 Y 0 11111 试用原码加减交替法计算X Y 2 5定点运算器的组成 2 5 1逻辑运算2 5 2多功能算术 逻辑运算单元ALU2 5 3内部总线2 5 4定点运算器的基本结构 2 5定点运算器的组成 前面讲到的行波进位加法器存在两个大问题 由于串行进位 所以它的运算时间较长 只能完成算术运算 不能进行逻辑运算 2 5 1逻辑运算 自学P44 2 5 2多功能算术 逻辑运算单元ALU 1 基本思想一位全加器 FA 的逻辑表达式为 Fi Ai Bi CiCi 1 AiBi BiCi CiAi为了将全加器的功能进行扩展以完成多种算术逻辑运算 我们先不将输入Ai和Bi和下一位的进位Ci直接进行全加 而是将Ai和Bi先组合成由控制参数S0 S1 S2 S3控制的组合函数Xi和Yi 然后再将Xi Yi和下一位进位数通过全加器进行全加 这样 不同的控制参数可以得到不同的组合函数 因而能够实现多种算术运算和逻辑运算 2 5 2多功能算术 逻辑运算单元ALU S1 S3 Xi Yi与控制参数和输入量的关系 2 5 2多功能算术 逻辑运算单元ALU 1 可以证明 Xi Yi XiXi Yi Yi 自己试试看 2 2 5 2多功能算术 逻辑运算单元ALU ALU的某一位逻辑表达式见下 2 5 2多功能算术 逻辑运算单元ALU 4位ALU 多功能算术 逻辑运算单元 每一位的进位公式可递推如下 Cn 1 Y0 X0Cn Cn 2 Y1 X1Cn 1 Y1 Y0X1 X0X1Cn Cn 3 Y2 X2Cn 2 Y2 X2Y1 Y0X1X2 X0X1X2Cn Cn 4 Y3 X3Cn 3 Y3 X3Y2 X2X3Y1 Y0X1X2X3 X0X1X2X3Cn 2 5 2多功能算术 逻辑运算单元ALU 令G Y3 Y2X3 Y1X2X3 Y0X1X2X3P X0X1X2X3G为进位发生输出P为进位传送输出增加P和G的目的在于实现多片 组 ALU之间的先行进位 需要配合电路 称为先行进位发生器 CLA 器件 74181 2 5 2多功能算术 逻辑运算单元ALU 具有正逻辑和负逻辑两种 内部逻辑结构图见下页 74181ALU逻辑图 总体 2 5 2多功能算术 逻辑运算单元ALU 算术逻辑运算的实现 74181 M 0时 对进位信号没有影响 做算术运算M 1时 进位门被封锁 做逻辑运算说明 74181执行正逻辑输入 输出方式的一组算术运算和逻辑运算和负逻辑输入 输出方式的一组算术运算和逻辑运算是等效的 A B端可以判断两个数是否相等 2 5 2多功能算术 逻辑运算单元ALU 设计16位ALUCn x G0 P0CnCn y G1 P1Cn xCn x G2 P2Cn yCn 4 G3 P3Cn z片内先行进位 片间串行进位 32位ALU逻辑方框图 2个16位74L1828个4位ALU74L181 64位组间先行进位ALU 2 5 4内部总线 内部总线是指CPU内部各部件的连线 由三态门组成的数据总线 2 5 5定点运算器的基本结构 运算器包括ALU 阵列乘除器件 寄存器 多路开关 三态缓冲器 数据总线等逻辑部件 计算机的运算器的结构一般有三种 2 5 5定点运算器的基本结构 A B ALU 通用寄存器 特殊寄存器 单总线结构的运算器 输入数据和操作结构需要三次串行的选通操作 但它并不会对每种指令都增加很多执行时间 由于只控制一条总线 所以控制电路比较简单 两个操作数同时加到ALU进行运算 只需要一次操作控制 而且马上得到运算结果 ALU的输出不能直接加到总线上去 这是因为 当形成操作结构的输出时 两条总线都被输入数据占据 因而必须在ALU的输出端设置缓冲器 双总线结构的运算器 2 5 5定点运算器的基本结构 2 5 5定点运算器的基本结构 ALU的两个输入端分别由总线提供 而ALU的输出则与第三条总线相连 这样 算术逻辑操作就可以在一步的控制之内完成 设置一个总线旁路器 如果一个操作数不需要修改 而直接从总线2传送到总线3 那么可以通过控制总线旁路器把数据传出 三总线结构 2 6浮点运算方法和浮点运算器 2 6 1浮点加法 减法运算2 6 2浮点乘法 除法运算2 6 3浮点运算流水线2 6 4浮点运算器实例 2 6 1浮点加法 减法运算 1 浮点加减运算设有两个浮点数 和 它们分别为 2E M 2E M 其中E 和E 分别为数 和 的阶码 M 和M 为数 和 的尾数 两浮点数进行加法和减法的运算规则是 M 2E E M 2E 设E E 2 6 1浮点加法 减法运算 2 浮点运算步骤如下 1 0操作数的检查 看有无简化操作的可能 2 比较阶码大小并完成对阶 小阶向大阶对齐 3 尾数进行加 减运算 4 结果规格化并进行舍入处理 结果规格化 当尾数求和的结果两符号位不相等时 表明尾数求和的结果的绝对值大于1 向左破坏了规格化 此时将尾数结果实现右规格化 即结果右移一位 阶码加1 尾数不是1 M时 进行左规格化 舍入处理 在进行对阶或右规格化时 被右移尾数的末位会被丢掉 为减小误差 需进行舍入处理 1 就近舍入 即为 0舍1入 2 朝0舍入 即朝数轴原点方向舍入 3 朝 舍入 对正数来讲 多余位不全为0则向最低有效位进1 负数则是截尾 4 朝 舍入 正数截尾 负数向最低有效位进1 浮点运算器 加法 减法运算 例 设X 2010 0 11011011 Y 2100 0 10101100 求X Y 假设两数均以补码表示 阶码 尾数都采用双符号位 浮点运算器 加法 减法运算 解 浮点表示为 X 浮 00010 00 11011011 Y 浮 00100 11 01010100 对阶E Ex Ey 00010 11100 11110即 E为 2 X的阶码小 应使Mx右移两位 Ex加2 得 X 浮 00100 00 00110110 11 浮点运算器 加法 减法运算 2 尾数求和 0 1 1 浮点运算器 加法 减法运算 3 规格化和舍入处理结果的符号位与最高符号数值位相同 应执行左规处理 所谓左规格化的规则 就是尾数左移1位 阶码减1 所以结果为11 00010101 10 阶码为00011舍入处理 采用0舍1入法处理 则有11 00010101 111 00010110 4 判溢出阶码的符号位为00 不溢出 所以最终的结果为X Y 2011 0 11101010 浮点运算器 加法 减法运算 例 设X 2001 0 111 Y 2010 0 101 求X Y 假设两数均以补码表示 阶码采用3位 尾数采用4位 均包括符号位 浮点运算器 加法 减法运算 解 浮点表示为 X 浮 001 11 001 Y 浮 010 00 101 对阶 E 补 Ex 补 Ey 补 001 110 111即 E为 1 X的阶码小 应使Mx右移1位 Ex加1 得 X 浮 010 11 100 1 浮点运算器 加法 减法运算 2 尾数求差 Y 补 1 011 11 100 1 11 011 10 111 1 丢失 1 两个负数相加 结果为正数 说明产生了溢出 但是在浮点数的运算中 只有当阶码产生溢出时 才是溢出 此时只是说明尾数的结果为不规格化数 应进行右规 浮点运算器 加法 减法运算 3 规格化和舍入处理由于结果产生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西吉安市泰和县上圯水厂面向社会招聘5人考前自测高频考点模拟试题及答案详解参考
- 2025年哈尔滨石化分公司春季高校毕业生招聘考前自测高频考点模拟试题完整参考答案详解
- 2025年福建省龙岩市新罗区苏坂中心幼儿园招聘1人模拟试卷有答案详解
- 2025广东广州市黄埔区穗东街道庙头社区合同制人员招聘5人模拟试卷有完整答案详解
- 赣州发展投资控股集团有限责任公司2025年公开招聘笔试第一轮人员笔试历年参考题库附带答案详解
- 山东海洋文化旅游发展集团有限公司2025年度公开招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025陕西西安翻译学院后勤集团招聘食品安全快检实验室检测员笔试历年参考题库附带答案详解
- 2025陕西法士特齿轮有限责任公司招聘笔试历年参考题库附带答案详解
- 2025陕西安康市新华书店有限责任公司招聘20人笔试历年参考题库附带答案详解
- 2025年宁波慈溪市中西医结合医疗健康集团招聘派遣制工作人员3人考前自测高频考点模拟试题附答案详解(模拟题)
- 人教版九年级物理上-各单元综合测试卷含答案共五套
- 文科物理(兰州大学)学习通网课章节测试答案
- 人教版高二数学(上)选择性必修第一册1.2空间向量基本定理【教学设计】
- 2025年安徽省公务员录用考试《行测》真题及答案
- 2025中医四大经典知识竞赛真题模拟及答案
- 烘焙类产品的特性及应用
- 公路交通安全设施工高级工培训内容
- 第三章转录及转录调控
- GB/T 7193-2008不饱和聚酯树脂试验方法
- GB/T 3810.3-2016陶瓷砖试验方法第3部分:吸水率、显气孔率、表观相对密度和容重的测定
- 《嵌入式技术应用》课程标准
评论
0/150
提交评论