计算机的运算方法.ppt_第1页
计算机的运算方法.ppt_第2页
计算机的运算方法.ppt_第3页
计算机的运算方法.ppt_第4页
计算机的运算方法.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系 统 总 线 存储器 运算器 控制器 接口与通信 输入/输出设备 林楠 办公室:211 办公电话电子邮件: 计算机组成原理 第六章 计算机的运算方法 第六章 计算机的运算方法 3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法(重点:布斯乘法) 3.3、补码两位乘法 3.4、阵列乘法器 方法:充当计算机! 严格按照运算法则去做, 不加思考,态度认真, 保证结果正确。 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 原码一位除法基本上是从手算演变过来,符号位单独处理。 两个原码表示的数相除运算规则: 商的符号位:两数的符号相异或 商的数值部分:两数的绝对值相除。 运算方法与普通的十进制小数除法相类似, 设 n 位被乘数X 和 乘数Y 用定点小数表示(定点整数同样) 被除数: X原 = Xf . Xn-1 X1 X0 除数: Y原 = Yf . Yn-1 Y1 Y0 商 Q 原= ( Xf Yf ) + (0.Xn-1 X1 X0) / (0.Yn-1 Y1 Y0) 于是原码与原码相除就变成如何进行两个正数相除的问题了。 两种除法: 恢复余数法 不恢复余数法(加减交替法) 4.1、原码一位除法 两个数相除,上商时, 人会心算,一看就知道够不够减。 够减商1,不够减商0。 但机器不会,必须先作减法。 若余数为正,才知道够减; 若余数为负,才知道不够减。 不够减时,必须恢复原来的余数。 顾名思义恢复余数法。 4.1、原码一位除法 1)恢复余数法 0 8 7 -8 -1 +8 7 1 7 8 -7 +1 被除数 X=0.1011 除数Y=0.1101 求 X/Y。商精确到小数点后四位。 手算方法计算步骤如下: 4.1、原码一位除法 0.1101 0.1101 0 . 1011 - 0 . 1101 1 . 1110 + 0 . 1101 0 . 1011 0 . 10110 - 0 . 01101 0 . 01001 0 . 010010 - 0 . 001101 0 . 000101 0 . 0001010 - 0 . 0001101 1 . 1111101 + 0 . 0001101 0 . 0001010 0 . 00010100 - 0 . 00001101 0 . 00000111 - Y 得负数,不够减,商0 X低位补0 - 2-1Y 得正数,够减,商1 X低位补0 - 2-2Y 得正数,够减,商1 X低位补0 - 2-3Y 得负数,不够减,商0 + 2-3Y,恢复余数 - 2-4Y 得正数,够减,商1 + Y,恢复余数 X低位补0 4.1、原码一位除法 1)恢复余数法 1、符号单独处理, Q f = ( Xf Yf ) ,取绝对值相除; 2、作减法,若不溢出,运算开始; 3、 -Y,若余数 R 为正(够减),商 1 ,左移一位 ; -Y,若余数 R 为负(不够减),商 0 ,恢复余数,左移一位; 4、重复 n 步; 5、若最后一步余数为负(不够减),应恢复余数(+Y补)。 右移 除数Y,可以通过 左移 余数 来替代, 左移出界的 余数 的高位都是无用的零, 对运算不会产生任何影响。 如果,余数一共被左移了n次,最后需要校正。 最终的余数再右移n次。 寄存器A存放 被除数 X = 0.1011 ,后来可存放余数,累次参加运算。 寄存器B存放 除数 Y = 0.1101 寄存器C存放 商 Q = X / Y 另外设置计数器CR控制循环次数。 X原- Y原 运算可以用 X补 + -Y补取代; Y补= 0.1101 -Y补= 1.0011 4.1、原码一位除法 分析:参加运算的数X,Y 都是正数,正数的原码与补码表示相同。 被除数X(余数) 商 操作 0. 1011 0 0 0 0 0 + 1. 0011 - Y (+ -Y补) 1. 1110 0 0 0 0 0 负数:不够减,商0 + 0. 1101 +Y 恢复余数, (+ Y补) 0. 1011 0 0 0 0 0 余数和商同时左移一位 1. 0110 0 0 0 0 0 + 1. 0011 - Y (+ -Y补) 0. 1001 0 0 0 0 1 正数:够减,商1 1. 0010 0 0 0 1 0 余数和商同时左移一位 + 1. 0011 - Y (+ -Y补) 0. 0101 0 0 0 1 1 正数:够减,商1 0. 1010 0 0 1 1 0 余数和商同时左移一位 + 1. 0011 - Y (+ -Y补) 1. 1101 0 0 1 1 0 负数:不够减,商0 + 0. 1101 + Y 恢复余数, (+ Y补) 0. 1010 0 0 1 1 0 余数和商同时左移一位 1. 0100 0 1 1 0 0 + 1. 0011 - Y (+ -Y补) 0. 0111 0 1 1 0 1 正数:够减,商1 被除数X = 0.1011 除数Y = 0.1101 商0.1101 余0.0111*2-4 余数再右移四位得正确结果: 0.0000 0111。 2)不恢复余数法(加减交替法) 加减交替法是对恢复余数除法的一种修正。 当余数为负时,不恢复,继续求下一位商, 但用加上除数 (+Y) 的办法来取代 (-Y) 操作,其他操作不变。 加减交替法的规则如下: 余数为正,商1,左移一位,减除数(-Y); 余数为负,商0,左移一位,加除数(+Y)。 此方法不用恢复余数,所以又叫不恢复余数法。 但若最后一次上商为0,则仍需恢复余数(+Y补) 。 4.1、原码一位除法 被除数(余数) 商 操作 0. 1011 0 0 0 0 0 + 1. 0011 - Y (+ -Y补) 1. 1110 0 0 0 0 0 负数:商0 1. 1100 0 0 0 0 0 余数和商同时左移一位 + 0. 1101 + Y 0. 1001 0 0 0 0 1 正数:商1 1. 0010 0 0 0 1 0 余数和商同时左移一位 + 1. 0011 - Y (+ -Y补) 0. 0101 0 0 0 1 1 正数:商1 0. 1010 0 0 1 1 0 余数和商同时左移一位 + 1. 0011 - Y (+ -Y补) 1. 1101 0 0 1 1 0 负数:商0 1. 1010 0 1 1 0 0 余数和商同时左移一位 + 0. 1101 + Y 0. 0111 0 1 1 0 1 正数:商1 4.1、原码一位除法 被除数X = 0.1011 除数Y = 0.1101 商0.1101 余0.0111*2-4 余数再右移四位得正确结果: 0.0000 0111。 CPA 2.3、补码定点加法器 +X- Y 设开关电路 负数不送回 思考问题: 恢复余数法在电路上实现其实更简单! 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 4.2、补码一位除法 补码加减交替法, 法则如下: (Ri补为余数,数值部分共n位) X补 补Y补补符号 商符求余数R补 补 R补 补,Y补补符号 上商求新余数(共n步) 同号0X补 补-Y补补 同号(够够减) 异号(不够够减) 1 0 2Ri补 补- Y补补 2Ri补 补+ Y补补 异号1X补 补+Y补补 同号 异号 1 0 2Ri补 补- Y补补 2Ri补 补+ Y补补 1)比较 2)上商 3)求新余数 R补 补,Y补补符号 上商求新余数(共n步) 同号12Ri补 补 + -Y补补 异号02Ri补 补 + Y补补 1)比较 2)上商 3)求新余数 由上式化简 方法:列表格 4)商的符号 两种常见的做法: 方法一:第一步比较XY同号做X补Y补;异号做X补+Y补; 方法二:一开始就将被除数X当作初始余数R0, R0与Y同号商1,异号商0,得的假商最后求反进行校正。 5)商的校正 对于方法一,商符正确,商末位恒置1。 对于方法二,商符取反,商末位恒置1。 4.2、补码一位除法 思考:由于方法一开始比较被除数与除数,后来比较余数与除数, 控制部署不一样。所以采用方法二,硬件电路比较好实现, 全部是比较余数与除数,便于计算机控制。 4.2、补码一位除法 被除数X(余数R) 商Q 操作 0. 1011 0 0 0 0 0 + 1. 0011 X Y 同号:+ -Y补 1. 1110 0 0 0 0 0 R Y 异号:商0 1. 1100 0 0 0 0 0 余数R和商同时左移一位 + 0. 1101 + Y补 0. 1001 0 0 0 0 1 R Y 同号:商1 1. 0010 0 0 0 1 0 余数R和商同时左移一位 + 1. 0011 + -Y补 0. 0101 0 0 0 1 1 R Y 同号:商1 0. 1010 0 0 1 1 0 余数R和商同时左移一位 + 1. 0011 + -Y补 1. 1101 0 0 1 1 0 R Y 异号:商0 1. 1010 0 1 1 0 0 余数R和商同时左移一位 + 0. 1101 + Y补 0. 0111 0 1 1 0 1 商的末位恒置1 使用方法一: X补=0.1011 Y补=0.1101 -Y补=1.0011 被除数X = 0.1011 除数Y = 0.1101 商0.1101 余0.0111*2-4 余数再右移四位得正确结果,前面补符号位。 4.2、补码一位除法 被除数X(余数R) 商Q 操作 0. 1011 0 0 0 0 1 R Y 同号:商1 1. 0110 0 0 0 1 0 余数R和商同时左移一位 + 1. 0011 + -Y补 0. 1001 0 0 0 1 1 R Y 同号:商1 1. 0010 0 0 1 1 0 余数R和商同时左移一位 + 1. 0011 + -Y补 0. 0101 0 0 1 1 1 R Y 同号:商1 0. 1010 0 1 1 1 0 余数R和商同时左移一位 + 1. 0011 + -Y补 1. 1101 0 1 1 1 0 R Y 异号:商0 1. 1010 1 1 1 0 0 余数R和商同时左移一位 + 0. 1101 + Y补 0. 0111 1 1 1 0 0 0 1 1 0 1 校正:商符取反,商末位置1 使用方法二: X补=0.1011 Y补=0.1101 -Y补=1.0011 被除数X = 0.1011 除数Y = 0.1101 商0.1101 余0.0111*2-4 余数再右移四位得正确结果,前面补符号位。 4.2、补码一位除法 被除数X(余数R) 商Q 操作 0. 0100 0 0 0 0 0 R Y 异号:商0 0. 1000 0 0 0 0 0 余数R和商同时左移一位 + 1. 1000 + Y补 0. 0000 0 0 0 0 0 R Y 异号:商0 0. 0000 0 0 0 0 0 余数R和商同时左移一位 + 1. 1000 + Y补 1. 1000 0 0 0 0 1 R Y 同号:商1 1. 0000 0 0 0 1 0 余数R和商同时左移一位 + 0. 1000 + -Y补 1. 1000 0 0 0 1 1 R Y 同号:商1 1. 0000 0 0 1 1 0 余数R和商同时左移一位 + 0. 1000 + -Y补 1. 1000 0 0 1 1 0 1 0 1 1 1 校正:商符取反,商末位置1 使用方法二: X补=0. 0100 Y补= 1.1000 -Y补= 0.1000 被除数X = 0. 0100 除数Y = 1.1000 商1.0111 余11.1000*2-4 余数再右移四位得正确结果: 1. 1111 1000 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 和阵列乘法器相比,阵列除法器也是一种并行运算部件,采用大规模 集成电路制造。它比早期的串行除法器的控制线路少,并提供较高的 运算速度。 4.3、阵列除法器 P297 可控加/减法单元 (CAS) 0.1101 0.1101 0 . 10110 - 0 . 01101 0 . 010010 - 0 . 001101 0 . 0001010 - 0 . 0001101 0 . 00010100 - 0 . 00001101 0 . 00000111 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 浮点数的表示形式(以2为底): X = S 2 j = 定点小数 * 2 定点整数 S 尾数,定点小数,用补码表示,决定数的有效精度。 j 阶码,定点整数,用移码或补码表示,决定数的表示范围。 2 基数 5、浮点四则运算 IEEE754 国际标准: 符号位数 阶码 j 位数 尾数S位数 总位数 短浮点数1 8 23 32 长浮点数1 11 52 64 临时浮点数1 15 64 80 0.8125 * 10 5 浮点数的阶码为什么用移码表示呢? 1) 正数的移码大于负数的移码:X移 -X移 原码、补码、反码都不具备。 2) 如果:X Y 则 X移 Y移 所以,在浮点运算中,可以方便地通过比较移码的大小来实现阶 码真值大小的比较,其他三种码都不具备这一特性。 移码:补码符号位取反(1表示正号,0表示负号) 数据0有唯一的编码,即+0移=-0移=10000。 5、浮点四则运算 移码运算特点: 1) 最高位符号位,1表示正号,0表示负号。 如果是双符号位,最高位保持0:01正数,00负数。 溢出判断:最高位为1,10上溢,11下溢。 2)在计算机中,移码只执行加减法运算,且运算结果+2n修正; (即结果的符号位取反)得到X移。 例如:X=+1010 Y=+0011, 则X移=11010Y移=10011 X移+Y移=11010+10011 = 01101, 修正:X+Y移= 11101 运算法则: X + Y移 = X移+Y补 X - Y移 = X移+-Y补 5、浮点四则运算 X+Y移= X移+Y补 = 11010 + 00011 = 11101 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 X=104 = 0110 1000 = 0.110 1000 * 27 = 0 0111;0.1101000 Y=40 = 0010 1000 = 0.101 0000 * 26 = 0 0110;0.1010000 5.1、浮点加减运算 思考1:X和Y的尾数可以直接相加减吗? 思考2:对齐阶码后,尾数才能进行加减运算。 阶码大的向小的看齐?还是小的向大的看齐? 思考3:对齐阶码是不是等于小数点对齐了? 思考4:对齐阶码后,尾数应该做什么相应的改变? Y=40 = 0010 1000 = 0.0101 0000 * 27 = 0 0111;0.01010000 800 = 0.8103 = 0.8103 = 0.08 104 + 9000 = 0.9104 = 90 103 = 0. 9 104 9800 = 0.98104 设有两浮点数X,Y,其中:X = SX * 2 jX Y = SY * 2 jY XY运算执行以下五步: 1) 阶码对齐(对大阶):使两数的阶码值相等,对齐小数点。 求阶码差j,j0时,小阶码的尾数右移j位:阶码 +j, 2) 尾数相加减:两尾数进行加/减运算。 3) 尾数规格化: 尾数符号 01 或 10:尾数溢出。 右规:尾数(带符号)右移1位,前补符号位。 同时阶码+1。 尾数符号 00 或 11:尾数不溢出。 但如符号位和最高数值位相同: 00 0 或 11 1 左规:尾数数值部分左移直到最高数值位与符号位不同为止 (00 1,11 0)。同时阶码减去左移位数。 5.1、浮点加减运算 4) 尾数舍入(处理多余位) 在执行右规或对阶时,尾数低位上的数值会移掉,使数值的精度 受到影响,常用“0”舍“1”入法。 (三种舍去法:恒舍去,末位恒置 1,0舍1入; 一般取其精度受影响最小的方法: 0舍1入) 5) 阶码判溢出 若阶码符号00或11,不溢出。 若阶码符号10 为下溢,置运算结果为零, 若阶码符号01 为上溢,置溢出标志。 5.1、浮点加减运算 X = 0111 00.1101000 jX SX Y = 0110 00.1010000 jY SY SY jY + 1 SX jX + 1 SX jX + 1 No No Yes jX = jY ? SX +- SY SX jX (or jY) jX Xf1Xf2 = 1 Xf1Xf2 X1+ Xf1Xf2 X1 = 1 ? SX jX - 1 输出 Yes Yes No 3)尾数规格化 00.1101000 SX + 00.0101000 SY 01.0010000 右规:0111 00.10010000 左规 右规 2)尾数加减 1)阶码对齐 4)尾数舍入 5)阶码判溢出 jX jY ? No Yes 例: 已知 X = 0.11011011 * 2010, Y = - 0.10101100 * 2100 求 X + Y 解: 阶码对齐:jX补 = 00 0010 jY补 = 00 0100 - jY补 = 11 1100 求阶差j=jX补+- jY补 = 00 0010 + 11 1100 = 11 1110 (-2) X 的阶码小:X阶码 + 2 ( jX补 = jY补 = 00 0100 ) X的尾数右移2位,前面补符号位 SX补= 00 0011011011(此时保留右移数据,不丢不舍) 尾数相加:SX补 =SX补 +SY补 = 00 0011011011 + 11 01010100 = 11 10001010 11 尾数规格化:左规: 数值位左移1位 = 11 000101011 阶码 - 1(jX补= 00 0011) 尾数舍入:舍去的附加位最高位为1,结果最低位+1: Sx补=11 00010110 S= - 0.11101010 阶码判溢出:阶码符号为00,不溢出。 最终结果为:X+Y = - 0.11101010 * 2011 实际运算时,先确定位数!(阶码、尾数最好都取双符号位参加运算。) 假设机器字长16位,采用浮点表示数,其中阶符2位,阶码4位,尾符2位, 尾数8位,都用补码表示。 4、定点除法运算 4.1、原码一位除法 4.2、补码一位除法 4.3、阵列除法器 5、浮点四则运算 5.1、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法 X = SX 2 jX Y = SY 2 jY X * Y = ( SX * SY ) 2 jX + jY X / Y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论