




已阅读5页,还剩189页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章计算机的运算方法与运算器 计算机组成原理 2013年3月16日 6 1 1非数值数据表示法 字符表示法汉字表示法 1 ASCII码 使用7bit表示128个字符From0000000to111111127 128注意 ASCII中的数字字符和数字本身不相等几乎所有计算机均支持该代码集但不是所有语言都能用128个字符表示 计算机利用寄存器存储数据寄存器中每个位称bit BinaryDigiT 最高有效位 MSB 最低有效位 LSB 专用名词 2 汉字表示法 8bit数据仅能表示256个字符 常用汉字6000多个 故其无法表示汉字GB2312国家标准采用16位表示与ASCII字符的区别 最高有效位MSB 1内码 外码 输入法 字模码 显示用 GB2312 80国家标准 1981年 GB2312 80国家标准 包括6763个汉字 682个非汉字字符 称为国标码或国际交换码GB2312字符集的构成 一级常用汉字3755个 按汉语拼音排列二级常用汉字3008个 按偏旁部首排列非汉字字符682个 汉字标准 GB2312 1980 GB0 简体 6763个汉字GB13000 199320902个汉字 Unicode1 1版本 汉字扩展规范GBK1 0标准1995 非国家标准 21003个字符 兼容GB2312 GB18030 2000 1 2 4字节编码 27484汉字 向下兼容GB2312GBK GB13000 字模码介绍 字模码是用点阵表示的汉字字型代码 是汉字的输出形式 字模点阵的信息量是很大的 所占存储空间也很大 以16 16为例 每个汉字要占用32个字节 因此字模点阵只能用来构成汉字库 而不能用于机内存储 6 1 2进制转换 二进制数转八进制二进制数转十六进制二进制数转十进制十进制数转二进制 1 二到八或十六进制转换 二进制转到八进制从小数点向左右三位一分组 10011100 01 2 234 2 8010二进制转十六进制从小数点向左右四位一分组 10011100 01 2 9C 4 160100 说明 整数部分不足位数对转换无影响 小数部分不足位数要补零凑足 则出错 2 二进制转十进制 从二进制数求其十进制的值 逐位码权累加求和 10010001 1 27 0 26 0 25 1 24 0 23 0 22 0 21 1 20 3 十进制转二进制 整数部分除2取余小数部分乘2取整 5 2 1 0 0 625 2 1 0 25 2 0 0 5 2 1 0 0 除尽为止1011 低 高 求得位数满足要求为止 4 进制转换的简单运算方法 17 128的二进制表示方法 大数的转换方法 记住几个常用的2的幂 25 3226 6427 12828 25629 512210 1024 1Kilo 211 2048212 4096213 8182214 16364215 32728216 65536220 1048576 1Mega 230 1073741824 1Giga 240 1Tera更大的单位是多少 250 1Peta260 1Exa270 1Zetta280 1Yotta 6 2数据的表示方法6 2 1数据格式 计算机中常用的数据表示格式有两种 1 定点格式 2 浮点格式 定点格式 小数点位置固定 容许的数值范围有限 但要求的处理硬件比较简单 浮点格式 小数点位置浮动 容许的数值范围很大 但要求的处理硬件比较复杂 1 定点数的表示方法 定点表示 约定机器中所有数据的小数点位置是按约定固定不变的 小数点就不再使用记号 来表示 定点数据的形式 纯小数或纯整数 设 定点数表示为 0 1 2 n其中 0符号位 0代表正号 1代表负号 小数点的位置约定在符号位x0的后面 不显示 小数点的位置约定在数值位xn的后面 不显示 例 X 1010110 纯整数 X 01010110 正数 符号位取0 Y 1101001 纯整数 Y 11101001 负数 符号位取1 X 0 11011 Y 0 10101 符号位取0 纯小数 X 0 11011 符号位取1 纯小数 X 1 10101 纯整数 X 01010110 符号位取0 纯整数 Y 11101001 符号位取1 符号位取0 纯小数 X 0 11011 符号位取1 纯小数 X 1 10101 注意到 无论是整数或是小数 在机器数的表示中 都不出现小数点 只是约定其位置 2 浮点数的表示方法 例 156 78 15 678 101 1 5678 102 0 15678 103 M RE其中 M为尾数 R为基数 E为阶码 指数 二进制数 在定点计算机中 一般约定 尾数 M 1 0 并按此原则确定各数据的浮点表示格式 上例 156 67 0 15678 103 规格化表示法 同理 对于二进制数 1011 1101 0 10111101 2 4 0 10111101 2 100 M RE 那么 计算机中究竟采用哪种数据形式 显然存在多种数据形式 可见 一个机器浮点数由阶码E和尾数M及其符号位组成 约定 尾数M用定点小数表示 给出有效数字的位数 M决定了浮点数的表示精度 阶码E 用整数形式表示 指明小数点在数据中的位置 其决定了浮点数的表示范围 浮点数的一般形式为 按照IEEE754的标准 32位浮点数和64位浮点数的标准格式为 其中 浮点数的符号位 0表示正数 1表示负数 尾数 23位 用纯小数表示 阶码 8位 阶符采用隐含方式 即采用移码方式来表示正负指数 其中 浮点数的符号位 0表示正数 1表示负数 尾数 52位 用纯小数表示 阶码 11位 阶符采用隐含方式 即采用移码方式来表示正负指数 几点注释 为了提高数据的表示精度 当尾数的值不为0时 其绝对值 M 应 0 5 即 尾数绝对值域的最高有效位应为1 否则通过修改阶码同时左右移小数点的办法 使其变成这一表示形式 这称为浮点数的规格化表示 浮点数所表示的范围显然远比定点数大 以下两种情况计算机都把该浮点数看成零值 称为机器零 当浮点数的尾数M为0 不论其阶码E为何值 当阶码E的值 Emin值时 不管其尾数M为何值 例子 设机器数字长为24位 欲表示 3万的十进制数 试问在保证数的最大精度的前提下 除阶符 数符各取1位外 阶码 尾数各取几位 满足最大精度可取m 4 n 18 解 6 2 2数的机器码表示 基本思想 把符号位和数字位一起编码来表示一个实际的数 主要表示方法有 原码 补码 反码 移码等 各种编码表示的数称为机器数或机器码 其对应的真实数值称为该编码对应的真值 1 原码表示法 若定点小数为x 0 1 2 n 则其原码表示的定义是 式中 原是机器数 是真值 例如 0 1001 则 原 0 1001 0 1001 则 原 1 1001 x1 x 01 x 1 x 0 x 1 定点小数 2 n X 1 2 n 下溢 上溢 最低有效位 最高有效位 对于定点整数x 1 2 n 则原码的定义是 对于定点整数 其原码形式为 原 0 1 2 n 注意到 原码机器中 0 0 有两种形式 对于定点小数 0 原 0 000 0 0 原 1 000 0对于定点整数 0 原 0000 0 0 原 1000 0 2n 02n 2n 0 2n 定点整数 1 X 2n 1 上溢 最高有效位 最低有效位 2 补码表示法 补码的概念 以钟表对时为例 假设现在的标准时间为4点正 而有一只表已经7点了 为了校准时间 可以采用两种方法 一是将时针退7 4 3格 一是将时针向前拨12 3 9格 显然 这两种方法都能对准到4点 由此可以看出 减3和加9是等价的 所以称 当模数Mod 12时 9是 3 补码 用数学公式表示 3 9 mod12 模 表示被丢掉的数值 上式在数学上称为同余式 设某数为x 当Mod 12时 x 3 x 9 x 7 x 5都是等价的 从这里可以得到一个启示 就是负数用补码表示时 可以把减法转化为加法 补码的定义 1 定点小数 例如 0 1011 则 补 0 1011 0 1011 则 补 10 10 0000 0 1011 1 0101 正数的补码就是本身 负数的补码需作运算 x1 x 02 x 2 x 0 x 1 mod2 小数 X1 2 n 1 X 0 x 补 2 X 2 X 0 X 1 根据补码定义 求负数的补码时需作一次减法运算 这显然不是补码方法的初衷 后面将介绍反码表示法可以解决负数的求补问题 2 定点整数 例 已知x 10111 y 11011 求 x 补 y 补 n 5 按定义 x 补 010111 y 补 25 1 y 1000000 11011 100101 x2n x 02n 1 x 2n 1 x 0 x 2n mod2n 1 注 上式机器数的位数为n 1 整数 X2 n 1 1 X 0 x 补 2n X 2n X 0 X 2 n 1 完成下列数的真值到补码的转换X1 01011011X2 01011011 X1 补 01011011 X2 补 10100101 注 0的补码只有一种形式对于定点小数 0 补 0 补 0 0000对于定点整数 0 补 0 补 00000 因此 补码的表示范围相对于原码 反码来讲多一种 定点小数可以表示 1 n 1位定点整数可以表示 2n 3 反码表示法 二进制数求反 就是二进制的各位数码0变为1 1变为0 即 若xi 0 则 1 若xi 1 则 0 对定点小数 反码的定义参见书 正数的反码就是本身 负数的反码则是符号位为1 数值位求反 由上式可以得出 x 反 x 1 111 1 10 0 0 0 00 1 2 2 n得出 反 2 2 n 0 x 1 比较反码与补码的公式 反 2 2 n 补 2 可得到 补 反 2 n由此可知一个由反码求补码的重要公式 即 一个负数的补码 可以通过将该数符号位置1 其余取反 然后在最末位 2 n 上加1的方法直接获得 4 移码表示法 在计算机中 移码通常用于表示浮点数的阶码 由于阶码一般取整数 所以移码通常只用于整数的表示 对定点整数 移码的定义是 移 2n 2n 2n n为移码数值部分的位数 移码表示法 X 移 2n 1 X2n 1 1 X 2n 1 X1 01010101 X1 补 01010101 X1 移 11010101X2 01010101 X2 补 10101011 X2 移 00101011 移码在数轴上的表示 定点小数没有移码定义平行移动移码为全0时表示真值最小 为 8 移码为全1时 表示真值最大 为 7 数值 15 7 8 0 0 编码 例 若阶码数值部分为5位 以 表示真值 则 移 25 25 25又例 当正数 10101时 移 1 10101当负数 10101时 移 25 25 10101 0 01011 注意到 移码中的逗号不是小数点 而是表示左边一位是符号位 显然 移码中符号位 0表示的规律与原码 补码 反码相反 移码的表示范围和补码一致 0只有一种表示方式 只是符号位正好相反 机器码表示法小结 在数据的四种机器表示法中 正数的原码 反码 补码等于真值 只有负数才分别有不同的表示方法 补码和移码的0只有一种表示方法 因此其表示范围相对于原码和反码多一种 定点小数可表示 1 移码没有小数形式 正数可表示 2n 移码表示法主要用于表示浮点数的阶码 可以直接比较大小 表示范围和补码相同 只有最高位相反 42 各种编码 3 1 0 3 111 2 2 1 2 110 1 3 2 1 101 0 4 3 0 100 1 3 3 3 011 2 2 2 2 010 3 1 1 1 001 4 0 0 0 000 移码 补码 反码 原码 Binary NumberStored NumberRepresented 由于补码表示对加减法运算十分方便 因此目前机器中广泛采用补码表示法 在这类机器中数用补码表示 补码存储 补码运算 也有些机器 数用原码进行存储和传送 运算时改用补码 还有些机器在做加减法时用补码运算 在做乘除法时用原码运算 6 3定点运算 6 3 1移位运算 1 移位的意义 15米 1500厘米 小数点右移2位 机器用语 左移绝对值扩大 右移绝对值缩小 在计算机中 移位与加减配合 能够实现乘除运算 2 算术移位规则 1 右移添1 左移添0 0 反码 补码 原码 负数 0 原码 补码 反码 正数 添补代码 码制 符号位不变 例6 16 设机器数字长为8位 含一位符号位 写出A 26时 三种机器数左 右移一位和两位后的表示形式及对应的真值 并分析结果的正确性 解 A 26 则 A 原 A 补 A 反 0 0011010 6 0 0000110 13 0 0001101 104 0 1101000 52 0 0110100 26 0 0011010 移位前 11010 例6 17 设机器数字长为8位 含一位符号位 写出A 26时 三种机器数左 右移一位和两位后的表示形式及对应的真值 并分析结果的正确性 解 A 26 6 1 0000110 13 1 0001101 104 1 1101000 52 1 0110100 26 1 0011010 移位前 原码 11010 6 1 1111001 13 1 1110010 104 1 0010111 52 1 1001011 26 1 1100101 移位前 7 1 1111001 13 1 1110011 104 1 0011000 52 1 1001100 26 1 1100110 移位前 补码 反码 3 算术移位的硬件实现 a 真值为正 b 负数的原码 c 负数的补码 d 负数的反码 出错 影响精度 出错 影响精度 正确 影响精度 正确 正确 4 算术移位和逻辑移位的区别 算术移位 有符号数的移位 逻辑移位 无符号数的移位 逻辑左移 逻辑右移 低位添0 高位移丢 高位添0 低位移丢 例如01010011 逻辑左移 10100110 逻辑右移 01011001 算术左移 算术右移 00100110 11011001 补码 高位1移丢 10110010 6 3 2定点补码加 减法运算 运算方法及实现补码加减法运算公式溢出检测补码加减法逻辑实现快速加法器 补码加减法的实现 X Y 补 X 补 Y 补两数和的补码等于两数补码之和 X Y 补 X 补 Y 补 X 补 Y 补两数差的补码等于两数补码之差减法变加法 关键是求 Y 补 Y 补 Y 补 补对 Y 补逐位取反 再在最低位加1 补码加法公式证明 X Y 补 X 补 Y 补x 0y 0 无需证明 x 0y0 2 3证明相同 x 0y 0只需证明2 4两种情况即可 2 x 0y 0 x 补 x y 补 2 y x 补 y 补 x 2 y 2 x y 当x y0时2 x y 2进位位舍去 x 补 y 补 2 x y x y mod2 x y 补 mod2 4 x 0y 0 x y22 2 x y mod2 2 x y x y 补mod2 补码减法公式证明 X Y 补 X 补 Y 补 X Y 补 X 补 Y 补 加法公式 Y 补 Y 补 Y 补 Y 补 Y Y 补 0 补 0故 Y 补 Y 补成立 Y 补 Y 补 补 X Y 补 X 补 Y 补 X 补 Y 补 补码加法的几种情况 正正得负 正溢出 负负得正 负溢出 正常结果 符号位进位舍去 正常结果 计算机如何识别运算结果是否溢出 单符号数溢出检测1 正正得负负负得正结果溢出设两数符号位为f0f1和数符号位fs 单符号数溢出检测2 符号位进位Cf 最高位进位Cn Cf 0 Cn 0 Cf 1 Cn 1 Cf 0 Cn 1 Cf 1 Cn 0 单符号数溢出检测2 溢出信号V对应的真值表 双符号数溢出检测 非正常符号位 溢出 符号位进位舍去 正常结果 正常结果 非正常符号位 溢出 双符号数溢出检测 溢出信号V对应的真值表 单符号补码加 减器电路实现 方式控制M M 0加M 1减 C0 FAn 1 Sn 1 FAn 2 FA1 FA0 Cn 1 Cn 2 C1 Sn 2 S1 S0 Cn Xn 1 Yn 1 Xn 2 Yn 2 X1 Y1 X0 Y0 减法的避免减少了逻辑器件控制信号M如何产生 符号位 4 补码加减法的硬件配置 6 3 3乘法运算 1 分析笔算乘法 A 0 1101B 0 1011 A B 0 10001111 0 1101 0 1011 1101 1101 0000 1101 0 10001111 符号位单独处理 乘数的某一位决定是否加被乘数 4个位积一起相加 乘积的位数扩大一倍 乘积的符号心算求得 1 人工算法与机器算法的同异性在定点计算机中 两个原码表示的数相乘的运算规则是 乘积的符号位由两数的符号位按异或运算得到 而乘积的数值部分则是两个正数相乘之积 设n位被乘数和乘数用定点小数表示 定点整数也同样适用 被乘数 原 f n 1 1 0乘数 原 f n 1 1 0则乘积 原 f f 0 n 1 1 0 0 n 1 1 0 式中 f为被乘数符号 f为乘数符号 然而 人们习惯的算法对机器并不完全适用 原因之一 机器通常只有n位长 两个n位数相乘 乘积可能为2n位 原因之二 只有两个操作数相加的加法器难以胜任将n个位积一次相加起来的运算 早期计算机中为了简化硬件结构 采用串行的1位乘法方案 即多次执行 加法 移位 操作来实现 这种方法并不需要很多器件 然而串行方法毕竟太慢 随着大规模集成电路问世以来 出现了各种形式的流水式阵列乘法器 它们属于并行乘法器 2 笔算乘法改进 A B A 0 1011 0 1A 0 00A 0 001A 0 0001A 0 1A 0 00A 0 001 A 0 1A 0 1A 0 01 0 A 0 1 A 0 1A 0 1 A 0 1 0 A 0 1 A 0 1A 2 1 A 2 1 0 A 2 1 A 2 1 A 0 第一步被乘数A 0 第三步部分积 被乘数 3 改进后的笔算乘法过程 竖式 0 0000 0 1101 0 1101 0 1101 0 0000 初态 部分积 0 乘数为1 加被乘数 乘数为1 加被乘数 乘数为0 加0 小结 被乘数只与部分积的高位相加 由乘数的末位决定被乘数是否与原部分积相加 然后1形成新的部分积 同时乘数1 末位移丢 空出高位存放部分积的低位 硬件 3个寄存器 具有移位功能 一个全加器 4 原码乘法 1 原码一位乘运算规则 以小数为例 数值部分为绝对值相乘x y 2 原码一位乘递推公式 z0 开始 i 0 0 Yn 1 0 X Y右移一位i 1 i i n X0 Y0 P0 结束 Y N N Y 原码乘法算法流程图 加法次数 n次作为加法 一定移位符号位单独计算 例子 已知X 0 1101Y 0 1011计算 X 原 Y 原 00 110100 011000 1101 部分积 01 0011100 10011100 0000 00 10011100 010011100 1101 01 000111100 10001111 乘数 1 Y0 Y0 1011 Y0 101 Y0 10 判断位 说明 P0 0Y4 1 X 右移一位得P1Y4 1 X 右移一位得P2Y4 0 0 右移一位得P3Y4 1 X 右移一位得P4 X Y Y0 1 例题 已知x 0 1110y 0 1101求 x y 原 解 数值部分的运算 0 0000 0 1110 0 1110 0 0000 0 1110 0 1110 部分积初态z0 0 逻辑右移 逻辑右移 数值部分按绝对值相乘 x y 0 10110110 则 x y 原 1 10110110 特点 绝对值运算 逻辑移位 例题结果 用移位的次数判断乘法是否结束 部分积R0 乘数R1 Yn判断位 X 0 1101 Y 0 1011 X X 0 X 原码乘法逻辑结构 R0部分积 计数器 Yn X 2 控制电路 4 原码两位乘 原码乘 符号位和数值位部分分开运算 两位乘 每次用乘数的2位判断原部分积是否加和如何加被乘数 11 10 01 00 3 先减1倍的被乘数再加4倍的被乘数 5 原码两位乘运算规则 例6 22 已知x 0 111111y 0 111001求 x y 原 000 000000 000 111111 000 111111 00 111001 0 初态z0 0 x Cj 0 001 111110 2x Cj 0 111 000001 x Cj 1 000 111111 x Cj 0 0 0 1 补码右移 补码右移 解 数值部分的运算 数值部分的运算 x y 0 111000000111 则 x y 原 1 111000000111 例6 22结果 特点 绝对值的补码运算 算术移位 用移位的次数判断乘法是否结束 6 原码两位乘和原码一位乘比较 绝对值 绝对值的补码 逻辑右移 算术右移 n n 思考n为奇数时 原码两位乘移 次 最多加 次 5 补码乘法 设被乘数 乘数 被乘数任意 乘数为正 同原码乘法 但加和移位按补码规则运算 乘积的符号自然形成 被乘数任意 乘数为负 乘数 y 补 去掉符号位 操作同 最后加 x 补 校正 1 补码一位乘运算规则 以小数为例 Booth算法 被乘数 乘数符号任意 x y 补 2 1 2 2 附加位yn 1 Booth算法递推公式 z0 补 0 z1 补 2 1 yn 1 yn x 补 z0 补 yn 1 0 zn 补 2 1 y2 y1 x 补 zn 1 补 x y 补 zn 补 y1 y0 x 补 最后一步不移位 如何实现yi 1 yi 00 01 10 11 0 1 1 0 例6 23 已知x 0 0011y 0 1011求 x y 补 解 00 0000 11 1101 11 1101 00 0011 11 1101 00 0011 11 1101 1 0101 0 x 补 0 0011 y 补 1 0101 x 补 1 1101 x 补 x 补 x 补 x 补 x 补 x y 补 1 11011111 最后一步不移位 例用补码一位乘法计算 X 补 Y 补 X 0 10111 Y 0 10101解 X 补 1 01001 X 补 0 10111 Y 补 0 10101 部分积R0 乘数R1 判断位YnYn 1 X 补 1 01001 X 补 0 10111 Y 补 0 10101 X 补 X 补 X 补 X 补 X 补 X 补 部分积R0 乘数R1 判断位YnYn 1 2 Booth算法的硬件配置 乘法小结 原码乘符号位单独处理补码乘符号位自然形成 原码乘去掉符号位运算即为无符号数乘法 不同的乘法运算需有不同的硬件支持 整数乘法与小数乘法完全相同可用逗号代替小数点 课堂练习与思考 1 一位乘是指将乘法转化为 累加部分积与移位 循环 因此 A 在原码一位乘法中只有求和操作而无相减操作B 在补码一位乘法中只有求和操作而无相减操作C 在原码一位乘法中既有求和操作又有相减操作D 不管是原码一位乘或补码一位乘 都既有求和操作又有相减操作 A 2 在原码一位乘中 当乘数Yi为1时 A 被乘数连同符号位与原部分积相加后 右移一位 B 被乘数绝对值与原部分积相加后 右移一位 C 被乘数连同符号位右移一位后 再与原部分积相加 D 被乘数绝对值右移一位后 再与原部分积相加 B 4 设n 4位 不包括符号位在内 原码两位乘需做次移位 最多做次加法 补码Booth算法需做次移位 最多做次加法 课堂练习与思考 2 3 4 5 3 在补码Booth一位乘法中 如果判断位YnY n 1 10 则下一步 但不是最后一步 的操作是将部分积加上 再向 移一位 设x为被乘数 y为乘数 右 X 补 6 3 4除法运算 1 分析笔算除法 x 0 1011y 0 1101求x y 0 1011 0 1101 0 01101 0 01001 0 001101 0 000101 0 00001101 0 00000111 1 商符单独处理 心算上商 余数不动低位补 0 减右移一位的除数 上商位置不固定 商符心算求得 0 0 1 0 1 0 0 0 计算机计算需考虑的几点 1 计算机中 小数点是固定的 不能简单地采用手算的办法 为便于机器操作 使 除数右移 和 右移上商 的操作统一起来 2 机器的运算过程和人毕竟不同 人会眼看心算 一看就知道够不够减 但机器却不会心算 必须先作减法 若余数为正 才知道够减 若余数为负 才知道不够减 不够减时必须恢复原来的余数 以便再继续往下运算 这种方法称为恢复余数法 要恢复原来的余数 只要当前的余数加上除数即可 但由于要恢复余数 使除法进行过程的步数不固定 因此控制比较复杂 2 笔算除法和机器除法的比较 商符单独处理 心算上商 符号位异或形成 x y 0上商1 x y 0上商0 2倍字长加法器 上商位置不固定 1倍字长加法器 在寄存器最末位上商 3 原码除法 以小数为例 被除数不等于0 除数不能为0 约定 恢复余数除法 如何判断是否够减原码运算判断借位利用补码作减法 判断余数符号即可余数为负数时 必须恢复余数即将余数加除数 恢复成原来的值 求下一位商 必须将余数左移一位 再与除数比较比较 上商 恢复 余数移位 再比较 直到获得商所需要的位数为止 00 100101 001011 0101 被除数 余数 00 011100 111011 0101 00 001100 011011 0101 商 上商位 说明 减Y比较 左移一位减Y比较 余数R0 0 商 0加Y恢复余数 余数R1 0 商上1左移一位减Y比较 R2 0 商上1左移一位减Y比较 R3 0 商上0加Y恢复余数 左移一位减Y比较 R4 0 商上1 11 111000 1011 00 0001 00 011000 110011 0101 11 101100 1011 0 110 0 1101 0 110 0 1 0 0 0 11 Y 补 Y 补 Y 补 Y 补 恢复余数除法问题 需要进行恢复余数的操作恢复余数的操作次数不确定 故运算时间不固定 影响除法速度 实际应用通常采用不恢复余数除法 2 不恢复余数法 余数Ri 0上商 1 2Ri y 余数Ri 0上商 0 Ri y 恢复余数 2 Ri y y 2Ri y 加减交替 恢复余数法运算规则 不恢复余数法运算规则 上商 1 2Ri y 上商 0 2Ri y 加减交替法 解 例6 25 0 1011 1 0011 0 1101 1 0011 1 0011 0 1101 0 0000 y 补 0 y 补 y 补 y 补 y 补 x 原 1 1011 y 补 0 1101 y 补 1 0011 y 原 1 1101 1 1 0 1 逻辑左移 x0y0 11 0 上商n 1次 例6 25结果 特点 用移位的次数判断除法是否结束 第一次上商判溢出 移n次 加n 1次 3 原码加减交替除法硬件配置 A X Q均n 1位 用Qn控制加减交替 Ri 补 0 1000 4 补码除法 1 商值的确定 x 补 0 1011 y 补 1 1101 Ri 补 0 1000 x 补 1 1101 y 补 0 1011 x y Ri 补与 y 补同号 够减 x y Ri 补与 y 补异号 不够减 比较被除数和除数绝对值的大小 x与y同号 小结 x 补 0 1011 y 补 1 1101 Ri 补 0 1000 x 补 1 1101 y 补 0 1011 Ri 补 0 1000 x y Ri 补与 y 补异号 够减 x y Ri 补与 y 补同号 不够减 x与y异号 商值的确定 x 补与 y 补同号 正商 按原码上商 x 补与 y 补异号 负商 按反码上商 末位恒置 1 法 小结 简化为 同号 异号 异号 同号 2 商符的形成 除法过程中自然形成 x 补和 y 补同号 x 补 y 补 比较 Ri 补和 y 补 同号 够 1 异号 不够 0 原码上商 小数除法第一次 不够 上 0 正商 x 补和 y 补异号 x 补 y 补 比较 Ri 补和 y 补 异号 够 0 同号 不够 1 反码上商 小数除法第一次 不够 上 1 负商 3 新余数的形成 加减交替 例6 26 解 x 补 1 0101 y 补 0 1101 y 补 1 0011 1 0101 0 1101 1 0011 0 1101 0 1101 0 0000 异号做加法 1 0 0010 同号上 1 异号上 0 y 补 异号上 0 y 补 同号上 1 末位恒置 1 0 0 1 1 y 补 逻辑左移 4 小结 补码除法共上商n 1次 末位恒置1 第一次为商符 加n次移n次 第一次商可判溢出 精度误差最大为2 n 课堂练习与思考 1 在定点数一位原码除法中 A 为了避免溢出 被除数的绝对值要小于除数的绝对值 B 被除数的符号位和除数的符号位都要参加运算 C 每次加减法操作后 部分余数右移一位 D 符号位参加除法运算 并根据数值位的除法运算结果改变结果的符号位 2 原码加减交替除法 商符 参加操作的数是 A 原码B 绝对值得补码C 在形成商值得过程中自然形成D 由两个符号位异或形成 A B D 6 4 1浮点加减法运算 计算X Y 求解 如 Ex EyS 2Ex Mx My 如 Ex Ey 假设 6 4浮点四则运算 对阶 对阶 使得小数部分可以按位权值按位相加 大阶对小阶还是小阶对大阶 2110 0 11000 2100 0 00110 大阶对小阶2110 0 11000 2100 11 000 11 000 0 00110 小阶对大阶2100 0 00110 2110 0 00001 0 00001 0 11000 0 11001对阶过程应该是小阶对大阶尾数右移 尾数运算 如 Ex EyS 2Ex Mx My 尾数进行加或减运算 运算结果规格化 210 0 11000 也可表示为211 0 01100 同一个浮点数的编码唯一 为提高精度 尾数不为零的时 要求其绝对值大于1 2 即尾数最高有效位为1 否则要以修改阶码的方式同时左右移小数点 使其变成这一要求的表示形式 这个过程称为浮点数的规格化将运算结果右移以实现规格化表示称为向右规格化 右归将运算结果左移以实现规格化表示称为向左规格化 左归 规格化形式 规格化数形式0 1XXXX 0 1XXXX补码规格化形式00 1XXXX11 0XXXX补码非规格化数00 0XXXX11 1XXXX01 XXXXX10 XXXXX 00 0XXXX 00 1XXX0左规11 1XXXX 11 0XXX0左规01 XXXXX 00 1XXXX右规10 XXXXX 11 0XXXX右规 连符号位一起移位 规格化方法 计算机在表示浮点数时 通常进行向左规格化处理上溢的时候 右归下溢的时候 左归 右归规则 非正常符号位 溢出 符号位进位舍去 正常结果 正常结果 非正常符号位 溢出 向左规格化 尾数左移一位 阶码减1 尾数左移两位 阶码减2 左归规则 尾数连同符号位进位位右移一位 阶码加1 尾数连同符号位进位位右移一位 阶码加1 向右规格化 规格化规则小结 运算结果产生溢出时 必须进行右归如变形补码结果出现10 XX或者01 XXX如运算结果出现0 0XXX或1 1XX必须左归左归时最低数据有效位补0右归时连同符号位进位位一起右移左归时 阶码作减法 右归时 阶码作加法 舍入处理 右规后低位部分丢失了一位 这会对数产生一定的误差 0舍1入法 如被丢的最高数位为0 舍去 如为1 则将尾数末位加一 截去法 溢出处理 尾数上溢右归尾数下溢左归阶码正上溢 X 阶码负上溢 X 0 浮点数加减法 五个基本步骤对阶尾数求和规格化 左规 右规 舍入 截去 0舍1入 检查溢出 例1两浮点数x 2101 0 11011011 y 2111 0 10101100 假设尾数在计算机中以补码表示 可存储10位尾数 2位符号位 阶码以补码表示 双符号位 求x y 解 将x y转换成浮点数据格式 x 浮 00101 00 11011011 Y 浮 00111 11 01010011 100111 11 01010100步骤1 对阶 阶差为Ex Ey Ex 补 Ey 补 Ey 补 11000 1 11001Ex Ey 00101 11001 11110 00001 1 00010 2 0Ex Ey 0Ex Ey小阶对大阶 X阶码加2X尾数右移2位 解 将x y转换成浮点数据格式 x 浮 00101 00 11011011 Y 浮 00111 11 01010011 100111 11 01010100步骤1 对阶 阶差为Ex Ey Ex 补 Ey 补Ex Ey 2 0Ex Ey 0Ex Ey小阶对大阶 X阶码加2X尾数右移2位 x 浮 00111 00 00110110 11 步骤2 尾数求和 X Y 浮 00111 00 00110110 11 00111 11 01010100 00111 11 10001010 11 步骤2 尾数求和 X Y 浮 00111 00 00110110 11 00111 11 01010100 00111 11 10001010 11 步骤3 计算结果规格化 X Y 浮为非规格化数 左归一位 阶码减一 00110 11 00010101 1 步骤4 舍入处理 X Y 浮 00110 11 00010110 0舍1如法 X Y 浮 00110 11 00010101 截去法 步骤5 溢出判断无溢出 X Y 浮 2110 x 00 11101011 例2 两浮点数x 201 0 1101 y 210 0 1010 假设尾数在计算机中以补码表示 可存储6位尾数 2位符号位 阶码以补码表示 双符号位 采用0舍1入 求x y 解 将x y转换成浮点数据格式 x 浮 0001 00 1101 Y 浮 0010 11 0101 10010 11 0110步骤1 对阶 阶差为Ex Ey Ex 补 Ey 补 Ey 补 1101 1 1110Ex Ey 0001 1110 1111 00000 1 00001 1 0Ex Ey 0Ex Ey小阶对大阶 X阶码加1X尾数右移1位 解 将x y转换成浮点数据格式 x 浮 0001 00 1101 Y 浮 0010 11 0101 10010 11 0110步骤1 对阶 阶差为Ex Ey Ex 补 Ey 补Ex Ey 1 0Ex Ey小阶对大阶 X阶码加1X尾数右移1位 x 浮 0010 00 0110 1 步骤2 尾数求和 X Y 浮 0010 00 0110 1 0010 11 0110 0010 11 1100 1 步骤2 尾数求和 X Y 浮 0010 00 0110 1 0010 11 0110 0010 11 1100 1 步骤3 计算结果规格化 X Y 浮为非规格化数 左归两位 阶码减二 0000 11 0010 0 步骤4 舍入处理 X Y 浮 0000 11 0010 0 0舍1如法 X Y 浮 0000 11 0010 0 截去法 步骤5 溢出判断无溢出 X Y 浮 2000 x 0 1110 特殊例子 X 2111 0 11111111 Y 2111 0 10000001 X 浮 0111 0 11111111 Y 浮 0111 0 10000001 X Y 浮 0111 1 10000000尾数运算溢出 右归 连同符号位进位位一起右移一位 阶码加1 X Y 浮 1000 0 11000000阶码溢出 运算结果正溢出 特殊例子 X 2 1000 0 11110000 Y 2 1000 0 10000001 X 浮 1000 1 00010000 Y 浮 1000 0 10000001 X Y 浮 1000 1 10010001非规格化数 左归 左移一位 阶码减1 X Y 浮 1000 0 110010001000 1111 0111 7阶码负溢出 运算结果下溢 6 4 2浮点乘除运算 x Sx 2jx y Sy 2jy 1 乘法 x y Sx Sy 2jx jy 2 除法 1 阶码采用补码定点加 乘法 减 除法 运算 2 尾数乘除同定点运算 4 浮点运算部件 阶码运算部件 尾数运算部件 3 步骤 3 规格化 浮点数乘法运算 1 阶码相加阶码相加可能产生溢出 若产生溢出 则给出溢出指示 计算机进行溢出处理 2 尾数相乘尾数部分相乘可得积的尾数 尾数相乘可按定点乘法运算的方法进行运算 3 结果规格化当运算结果需要进行规格化操作时 可按浮点加 减法运算规格化方式处理 舍入方式也与加 减法方式中的相同 对阶码的运算有 1 1 两阶码求和 两阶码求差四种 运算时还必须检查结果是否溢出 在计算机中 阶码通常用补码或移码形式表示 补码运算规则和判定溢出的方法 前面已经讲过 1 浮点数的阶码运算 当混合使用移码和补码时 考虑到移码和补码的关系 对同一个数值 其数值位完全相同 而符号位正好完全相反 而 补的定义为 补 2n 1 则求阶码和用如下方式完成 移 补 2n 2n 1 2n 1 2n 即 移 移 补 mod2n 1 同理 移 移 补上二式表明执行阶码加减时 对加数或减数 来说 应送移码符号位正常值的反码 2 尾数处理 浮点加减法对结果的规格化及舍入处理也适用于浮点乘除法 第一种简单方法是 无条件地丢掉正常尾数最低位之后的全部数值 这种办法被称为截断处理 好处是处理简单 缺点是影响结果的精度 第二种简单办法是 运算过程中保留右移中移出的若干高位的值 最后再按某种规则用这些位上的值修正尾数 这种处理方法被称为舍入处理 例 设有浮点数 2 5 0 0110011 23 0 1110010 阶码用4位移码表示 尾数 含符号位 用8位补码表示 求 浮 要求用补码完成尾数乘法运算 运算结果尾数保留高8位 含符号位 并用尾数低位字长值处理舍入操作 解 移码采用双符号位 尾数补码采用单符号位 则有 M 补 0 0110011 M 补 1 0001110 E 移 01011 E 补 00011 E 移 00011 浮 00011 0 0110011 浮 00011 1 0001110 1 求阶码和 E E 移 E 移 E 补 00011 00011 00110 值为移码形式 2 2 尾数乘法运算可采用补码乘法实现 即有 M 补 M 补 0 0110011 补 1 0001110 补 1 1010010 1001010 补 3 规格化处理乘积的尾数符号位与最高数值位符号相同 不是规格化的数 需要左规 阶码变为00101 3 尾数变为 1 0100101 0010100 4 舍入处理尾数为负数 取尾数高位字长 按舍入规则 舍去低位字长 故尾数为1 0100101 最终相乘结果为 浮 00101 1 0100101其真值为 2 3 0 1011011 浮点数除法运算 如 X 2m MxY 2n MyX Y 2m Mx 2n My 2m n Mx My 浮点数除法运算 尾数调整如果被除数尾数大于除数的尾数 从绝对值考虑 则将被除数尾数右移一位并相应调整阶码 由于给出运算的操作数是规格化数 一般只作一次调整便可达到要求 阶码求差商的阶码等于被除数的阶码减去除数的阶码 此步运算基本上获得了商的阶码 尾数相除以被乘数的尾数除以除数的尾数以获得商的尾数 尾数相除与定点除法运算相同 浮点除法尾数运算 例题 例 x 2101 0 1001 y 2011 0 1101 按补码浮点运算方法求x y 解 x 补 00 101 00 1001 y 补 00 011 11 0011 Sy 补 00 1101 阶码相减 jx 补 jy 补 00 101 00 011 00 101 11 101 00 010 尾数相除 采用补码除法 浮点除法尾数运算 例题 续 尾数相除 采用补码除法 结果为 Sx Sy 1 0101 规格化 尾数相除结果已为规格化数 所以 x y 补 00 010 11 0101 则 x y 2010 0 1011 6 5算术逻辑单元 6 5 1ALU电路 组合逻辑电路Ki不同取值Fi不同 四位ALU74181 M 0算术运算 M 1逻辑运算 S3 S0不同取值 可做不同运算 二进制加法运算 Xn 1 X2X1X0 Yn 1 Y2Y1Y0 n 1 2 1 0 各位逐位相加 进位从右至左传递首先要考虑一位加法 然后考虑进位链 一位加法逻辑电路实现 S X Y 0 1 11 0 11 1 00 0 0 一个异或门即可实现自动实现一位加法 算术运算逻辑电路 带进位链的一位全加器 一位全加器逻辑实现 3级门电路延迟3T 多位加法器 N位加法器包含n个全加器将多个一位全加器串联低位进位输出连接到高位进位输入 单符号位补码加法器电路 ripplecarryadder 符号位 行波进位加法器 时间延迟 双符号位补码加法器电路 符号位 补码减法电路实现 补码减法可以转换为加法 X 补 Y 补 X 补 Y 补实现减法的关键是求减数Y乘以负一的补码方法 将Y补连同符号位一起逐位取反末位加一 Y 补 Y 补 补S X 补 Y 补S X 补 Y 补 加法器的改造 C0 FAn 1 Sn 1 FAn 2 FA1 FA0 Cn 1 Cn 2 C1 Sn 2 S1 S0 Cn Xn 1 Yn 1 Xn 2 Yn 2 X1 Y1 X0 Y0 符号位 Input 加法器输入Y补作加法 如果输入 Y 补则作减法 6 5 2快速进位链 1 并行加法器 AiBi Ai Bi Ci 1 di AiBi本地进位 ti Ai Bi传送条件 则Ci di tiCi 1 2 串行进位链 进位链 传送进位的电路 串行进位链 进位串行传送 以4位全加器为例 每一位的进位表达式为 C0 d0 t0C 1 C1 d1 t1C0 C2 d2 t2C1 C3 d3 t3C2 4位全加器产生进位的全部时间为8ty n位全加器产生进位的全部时间为2nty 设与非门的级延迟时间为ty 3 并行进位链 n位加法器的进位同时产生 以4位加法器为例 C0 d0 t0C 1 C1 d1 t1C0 C2 d2 t2C1 C3 d3 t3C2 d1 t1d0 t1t0C 1 d2 t2d1 t2t1d0 t2t1t0C 1 d3 t3d2 t3t2d1 t3t2t1d0 t3t2t1t0C 1 先行进位 跳跃进位 当diti形成后 只需2 5ty产生全部进位 设与或非门的延迟时间为1 5ty n位全加器分若干小组 小组中的进位同时产生 小组与小组之间采用串行进位 当diti形成后 经2 5ty 5ty 7 5ty 10ty 1 单重分组跳跃进位链 产生C3 C0 产生C7 C4 产生C11 C8 产生C15 C12 以n 16为例 2 双重分组跳跃进位链 n位全加器分若干大组 大组中又包含若干小组 每个大组中小组的最高位进位同时产生 大组与大组之间采用串行进位 以n 32为例 3 双重分组跳跃进位链大组进位分析 C3 d3 t3C2 d3 t3d2 t3t2d1 t3t2t1d0 t3t2t1t0C 1 以第8小组为例 D8小组的本地进位与外来进位无关 T8小组的传送条件与外来进位无关传递外来进位 C7 D7 T7C3 C11 D6 T6C7 进一步展开得 C15 D5 T5C11 C3 D8 T8C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢结构加工厂管理方案
- 现代化厂房建设的智能化系统设计
- 地基稳固技术与实施方案
- 丙烯酸酯生产线项目技术方案
- 医院院区改扩建项目建筑工程方案
- 2025年电气设备安装安全生产实操试题及答案
- 心血管内科学考试试题及答案
- 孕期健康知识问答试题与答案
- 2025年新员工软件开发需求分析试题及答案
- 大学英语六级阅读理解试题及答案
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 2025年注册道路工程师执业资格基础考试应试辅导(公共基础)(上下册)
- 终极焊工考试试题及答案
- 国家能源安庆市2025秋招能源与动力工程类面试追问及参考回答
- 房屋安全性鉴定培训试题及答案解析
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 火锅店引流截流回流方案
- 黑龙江省齐齐哈尔市富拉尔基区2024-2025学年高一上学期期中考试生物试题含参考答案
- 大学日语四级讲解课件
- 2025年档案员考试试题及答案
- 仓库内安全培训资料课件
评论
0/150
提交评论