运算方法与运算部.ppt_第1页
运算方法与运算部.ppt_第2页
运算方法与运算部.ppt_第3页
运算方法与运算部.ppt_第4页
运算方法与运算部.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第三章 运算方法与运算部件 在计算机中,完成数值运算的部件是在计算机中,完成数值运算的部件是CPUCPU中的算术逻辑中的算术逻辑 运算单元运算单元ALUALU。它的逻辑结构牵连到机器的指令系统、数据它的逻辑结构牵连到机器的指令系统、数据 表示方法、运算方法、以及选用的逻辑器件等。表示方法、运算方法、以及选用的逻辑器件等。 本章重点介绍计算机中完成加、减、乘、除、逻辑运算本章重点介绍计算机中完成加、减、乘、除、逻辑运算 的基本运算方法和相关运算器的构成及工作原理。的基本运算方法和相关运算器的构成及工作原理。 一、定点加减运算(补码运算) 二、溢出判别 三、移位 四、十进制运算 五、逻辑运算(简介) 第一节 算术逻辑运算基础 1. 定点加减运算 一、补码加减运算 计算机中,常用补码进行加减运算。 补码可将减法变加法进行运算。 补码运算特点:符号位与数值位一同运算。 运算的基本规则: XX补 补+ +YY补 补 = = X+YX+Y补 补 X-YX-Y补 补= = XX补 补- -YY补 补 = = XX补 补+- +-YY补 补 由 YY补 补求得- -YY补 补 。 其方法是:对 YY补 补包含符号位各位求反,末位 加1。 1.X补+Y补 = 2 X0+X + 2 Y0+Y=2(X0+Y0)+(X+Y) (1)若X0Y0 =00,则 XX补 补+ +YY补 补 = = X+Y= X+Y X+Y补 补; (2)若X0Y0 =01或10,则 XX补 补+ +YY补 补= =2+( (X+Y) 当X+Y0时, 2+(X+Y)2,进位丢失,得: XX补 补+ +YY补 补 = =X+Y= X+Y X+Y补 补; 当X+Y X+Y -1 ,2 2+(X+Y) 1 此时,此时, XX补 补+ +YY补 补 = = 2+(X+Y) = X+Y X+Y补 补(2自然丢失) 在模在模2 2下下,设X补= X0X1X2 Xn, Y补= Y0Y1Y2 Yn 则X补=2 X0+X , Y补=2 Y0+Y 证明 : 2、 X补+Y补 = X+YX+Y补 补 Y补 = X+YX+Y补 补- -XX补 补 又X-Y补=X+(-Y)补 = X补+-Y补 -Y补 = X-YX-Y补 补- -XX补 补 +得:得: Y补 +-Y补 = X+YX+Y补 补- -XX补 补 + X-Y X-Y补 补- -XX补 补 = X+Y+ X-YX+Y+ X-Y补 补- -XX补 补- -XX补 补= X+X X+X补 补- -XX补 补 - - XX补 补=0 -Y补 =-Y补 即 X-Y补= X补+-Y补= X补-Y补 例1:已知机器字长 n=8,X=44,Y=53 求:X+Y=? 解:X原=00101100,Y原=00110101 X补=00101100,Y补=00110101 结果: X+Y = (+1100001)2 = +97 X补 = 0 0 1 0 1 1 0 0 + Y补 = 0 0 1 1 0 1 0 1 X+Y补= 0 1 1 0 0 0 0 1 超出8位,模值舍弃。 结果: X+Y = (-1100001)2 = -97 X补 =1 1 0 1 0 1 0 0 + Y补 =1 1 0 0 1 0 1 1 X+Y补 = 11 0 0 1 1 1 1 1 例2:已知机器字长 n=8,X=-44,Y=-53, 求:X+Y=? 解:44补= 00101100, 53补= 00110101 X补= -44补 = 11010011+1 = 11010100, Y补= -53补 = 11001010+1 = 11001011 模值舍弃 结果: X-Y补 = (0.0111000)2 ,X-Y = (+0.0111)2 X补 = 0 . 1 1 0 1 0 0 0 + -Y补 = 1 . 1 0 1 0 0 0 0 1 0 . 0 1 1 1 0 0 0 例3:已知机器字长 n=8,X=0.1101,Y=0.0110 求:X-Y=? 解: X补 = 0.1101000,Y补 = 0.0110000, -Y补 = 1.1010000 X补 =1. 0 0 1 1 0 0 0 + -Y补=0. 0 1 1 0 0 0 0 1. 1 0 0 1 0 0 0 例4:已知机器字长 n=8,X=-0.1101,Y=- 0.0110 求:X-Y=? 解:X补=1.0011000,Y补=1.1010000 -Y补=0.0110000 结果:X-Y补 = (1.1001000)2 X-Y = (-0.0111)2 2. 溢出的检测 溢出:运算结果超出了计算机所能表示的数据 范围。 正溢(上溢):运算结果为正而绝对值超出了 表示的范围。 负溢(下溢):运算结果为负而绝对值超出了 表示的范围。 定点数的溢出根据数值本身判断。 例:已知机器字长n=8,X= 120, Y=10, 求:X+Y=? 解:X补=01111000,Y补=00001010, X补=0 1 1 1 1 0 0 0 + Y补=0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 X+Y补=10000010,X+Y=11111110 X+Y的真值= -1111110=( -126)10 运算结果超出机器数值范围发生溢出错误。运算结果超出机器数值范围发生溢出错误。 8 8位计算机数值表位计算机数值表 达范围:达范围:(-128+127)(-128+127) 二、溢出判断规则与判断方法二、溢出判断规则与判断方法 zz两个相同符号数相加,其运算结果符号两个相同符号数相加,其运算结果符号 与被加数相反则产生溢出;与被加数相反则产生溢出; zz两个相异符号数相减,其运算结果符号两个相异符号数相减,其运算结果符号 与被减数相反则产生溢出。与被减数相反则产生溢出。 zz相同符号数相减,相异符号数相加不会相同符号数相减,相异符号数相加不会 产生溢出。产生溢出。 zz溢出判断方法:进位判断法,双符号位溢出判断方法:进位判断法,双符号位 法。法。 (1 1) 进位溢出判断法进位溢出判断法 S S CC 两单符号位的补码进行加减运算时,若最 高数值位向符号位的进位值C与符号位产生的进 位输出值S相同时则无溢出,否则溢出。 例: X补= 1.101 X补= 1.110 + Y补= 1.001 + Y补= 0.100 X+Y补= 10.110 X+Y补= 10.010 C=0,S=1 有溢出 C=1,S=1 无溢出 X+Y=+0.010 结论:OVR = SC = 0(无溢出) OVR = SC = 1(有溢出) 其中:S C=01 正溢;S C=10 负溢 (2) (2) 双符号位双符号位( (变形补码)溢出判断法变形补码)溢出判断法 设第一符号位Sf1,第二符号位Sf2, Sf1 Sf2 双符号含义: 0 0 表示运算结果为正数; 0 1 表示运算结果正向溢出; 1 0 表示运算结果负向溢出; 1 1 表示运算结果为负数。 结论: OVR = Sf1Sf2 = 0 无溢出 OVR = Sf1Sf2 = 1 有溢出 运算结果的真正符号位是左边第一位:Sf1。 例1:X=0.1001,Y=0.0101, 求:X+Y =? 解: X补= 00.1001 +Y补= 00.0101 X+Y补= 00.1110 双符号位相同,运算结果正确,无溢出。 X+Y = +0.1110 解:X补 = 11.0111 + Y补 = 11.1011 X+Y补 = 111.0010 模值舍弃 双符号位相同,运算结果正确,无溢出。 X+Y = - 0.1110 例2:X= - 0.1001,Y= - 0.0101, 求:X+Y =? 例3:X= 0.1011,Y= 0.0111, 求 X+Y补=? 解: X补= 00.1011 + Y补= 00.0111 X+Y补= 01.0010 双符号位为01,运算结果不正确,正向溢出。 解: X补= 11.0100+1=11.0101 Y补=00.0111 -Y补=11.1001 X补= 11.0101 + -Y补= 11.1001 X+Y补= 1 10.1110 双符号位为10,运算结果不正确,负向溢出。 例4:X= - 0.1011,Y= 0.0111, 求:X-Y补=? 模值舍弃 三、补码加减法运算规则如下: 参加运算的操作数用补码表示。参加运算的操作数用补码表示。 符号位与数值位一样参加运算。符号位与数值位一样参加运算。 如果是加法运算,则直接相加如果是加法运算,则直接相加 如果是减法,那么减数连同符号如果是减法,那么减数连同符号 位一起取反,然后末位加位一起取反,然后末位加1 1。 运算的结果仍然是补码形式。运算的结果仍然是补码形式。 四、移位操作 移位操作是实现算数和逻辑运算不可缺少的基 本操作,分为算术移位、逻辑移位和循环移位分为算术移位、逻辑移位和循环移位 。 移位操作可以实现对操作数的左移或右移一位可以实现对操作数的左移或右移一位 或若干位。或若干位。 移位的过程如下:移位的过程如下: 补码补码 左移左移 1 1、算术移位:指带符号数的移位,移位后符号不变。、算术移位:指带符号数的移位,移位后符号不变。 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 左移左移时,各位依次左移,最高有效位左移到符号 位,末位补0。在补码左移时如果不发生溢出,那 么对于最高有效位无论是0或1,左移至符号位使 它仍保持不变,如果有溢出,那么对于单符号位 补码将会破坏正确的符号。 补码补码 右移右移 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 右移右移时连同符号位一起,各位依次右移,符号位 的值右移至最高有效位,而符号位本身不变。 移掉移掉 移掉移掉 原码:不论正数负数,移位操作都相同。 左移:符号位保持不变,各位依次左移,末位补0。 右移:符号位保持不变,最高有效位补0,末位丢弃。 注意:左移时如果最高有效位已经是1,左移后将发生溢出。 原码原码 移位移位 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 移掉移掉 补补0 0 2 2、逻辑移位:左移低位补、逻辑移位:左移低位补0 0、右移高位补、右移高位补0 0。 逻辑逻辑 右移右移 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 移掉移掉 补补0 0 在程序中,常用算术逻辑移位指令实现简单的乘除运算。 算术左移或右移n位,分别实现对带符号数乘以2n或除以2n 逻辑左移或右移n位,分别实现对无符号数乘以2n或除以2n 3 3、循环移位:左移时最高位移到最低位。、循环移位:左移时最高位移到最低位。 右移时最低位移到最高位。右移时最低位移到最高位。 常用于:实现循环控制、高低字节互换或与算术逻辑移位指 令一起实现双倍字长或多倍字长的移位。 循环循环 右移右移 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 补补0 0 第二节算术逻辑运算部件ALU ALUALU部件主要用来完成对二进制数的定点算术运算和部件主要用来完成对二进制数的定点算术运算和 逻辑运算。算术运算主要包括加法和减法运算。逻辑逻辑运算。算术运算主要包括加法和减法运算。逻辑 运算主要指与、或、非、异或等运算。运算主要指与、或、非、异或等运算。 加法又是各种运算的基础,因此加法又是各种运算的基础,因此ALUALU的核心是加法器的核心是加法器 。 一、加法单元一、加法单元 通常采用全加器。全加器有三个输入量: A操作数的第i位Ai B操作数的第i位Bi 低位送来的进位Ci 两个输出量:全加和I 和向高位的进位Ci+1 全加器的框图及功能表如下: Ci Ci+1 FI Xi Yi 全加器的逻辑图 输入输出 Xi Yi C i FI C i+1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 全加器功能表 第二节算术逻辑运算部件ALU (1) (1) 用与非门构成的全加器用与非门构成的全加器 根据功能表可以写出 I 和 Ci+1 的逻辑表达式: FIXi Yi C i Xi Yi C i Xi Yi C i Xi Yi C i Ci+1Xi Yi C i Xi Yi C I Xi Yi C I Xi Yi C I 化简表达式,可得到相应的全加器的表达式如书化简表达式,可得到相应的全加器的表达式如书5757 页页 (2) (2) 用半加器构成的全加器用半加器构成的全加器 不考虑进位输入,两数码相加称为半加。不考虑进位输入,两数码相加称为半加。 半加求和可用异或门实现,所以也称异或门为半半加求和可用异或门实现,所以也称异或门为半 加器。加器。 显然,全加可用两次半加实现,逻辑式如下:显然,全加可用两次半加实现,逻辑式如下: I Ai BiC I Ci+1 Ai Bi+(Ai Bi) C I 第二节算术逻辑运算部件ALU (3) (3) 串行加法器和并行加法器串行加法器和并行加法器 全加器只能实现对一位数的加法运算,为了完成对多位数的全加器只能实现对一位数的加法运算,为了完成对多位数的 相加,就要组成加法器。通常有相加,就要组成加法器。通常有2 2种形式:种形式: a. a. 串行加法器串行加法器 只有一位全加器,使用移位寄存器从低位到高位串行的提供只有一位全加器,使用移位寄存器从低位到高位串行的提供 操作数相加。每产生一位和需串行的送入结果寄存器中。进操作数相加。每产生一位和需串行的送入结果寄存器中。进 位信号由一位触发器保存,参与下一位运算。图见书位信号由一位触发器保存,参与下一位运算。图见书5858页。页。 速度较慢,基本不采用。速度较慢,基本不采用。 b. b. 并行加法器并行加法器 并行加法器中全加器的位数与操作数的位数相同,可以同并行加法器中全加器的位数与操作数的位数相同,可以同 时对操作数的各位进行相加。时对操作数的各位进行相加。 由于操作数各位是同时提供的,最低进位逐级影响到最高由于操作数各位是同时提供的,最低进位逐级影响到最高 位。因此它的最长运算时间是由进位信号的传递时间决定,位。因此它的最长运算时间是由进位信号的传递时间决定, 而每位全加器本身的求和延迟是次要的,所以提供并行加法而每位全加器本身的求和延迟是次要的,所以提供并行加法 器速度的关键是尽量加快进位的产生和传递。器速度的关键是尽量加快进位的产生和传递。 第二节算术逻辑运算部件ALU 二、并行加法器进位链二、并行加法器进位链 进位链:并行加法器中传递进位信号的逻辑线路。 1. 1. 基本进位公式基本进位公式 每一位的进位表达式为每一位的进位表达式为 : C C i i1 1 = X = X i i Y Y i i +( +( X X i i YY i i ) C) C i i 其中其中X X i i 、Y Y i i 取决于本位参加运算的两个数,而与低位进位无关,因取决于本位参加运算的两个数,而与低位进位无关,因 此此称称X X i i Y Y i i 为进位产生函数,用为进位产生函数,用G G i i表示表示: : G G i i A A i i B B i i ( A( A i i BB i i ) ) C C i i 不但与本位的两个数有关,还依赖于低位的进位,因不但与本位的两个数有关,还依赖于低位的进位,因 此称此称A A i i BB i i 为进位传递函数,用为进位传递函数,用P P i i 表示表示 P P i i A A i i BB i i 其含义为:当两个输入均为其含义为:当两个输入均为1 1,必然要向高位产生进位,必然要向高位产生进位 当两个输入中有一个为当两个输入中有一个为1 1,低位传来的进位,低位传来的进位C Ci-1i-1将超将超 越本位向更高的位传递越本位向更高的位传递 所以有所以有C C i i1 1 = G = G i i + P + P i i GG i i 第二节算术逻辑运算部件ALU 2.2. 并行加法器的串行进位并行加法器的串行进位 如图:书如图:书5959页页 当操作数为当操作数为n n位长时,需要位长时,需要n n位全加器构成加法器如图位全加器构成加法器如图 3.3. 并行进位并行进位( (先行进位、同时进位)先行进位、同时进位) 为了解决并行加法器的运算速度,就必须解决进位传递的问题为了解决并行加法器的运算速度,就必须解决进位传递的问题 ,方法是让各级进位信号同时形成,而不是串行形成。线路图,方法是让各级进位信号同时形成,而不是串行形成。线路图 如图书如图书6161页。页。 组内并行、组间串行的进位链组内并行、组间串行的进位链 以以1616位加法器为例,将它分为位加法器为例,将它分为4 4组,每组组,每组4 4位,各组内采用位,各组内采用4 4位位 并行进位加法器,组间串行。并行进位加法器,组间串行。 采用这种结构,尽管进位延迟较纯串行方式缩短很多,但如果采用这种结构,尽管进位延迟较纯串行方式缩短很多,但如果 需要进一步提高速度,可采用组内并行、组间并行的进位链。需要进一步提高速度,可采用组内并行、组间并行的进位链。 5. 5. 组内并行、组间并行的进位链组内并行、组间并行的进位链 组间也采用并行进位,此结构相当于将加法器分为两级,组间也采用并行进位,此结构相当于将加法器分为两级,4 4个个 小组的组内进位链为小组的组内进位链为0 0级,组间进位链为级,组间进位链为1 1级级 第二节算术逻辑运算部件ALU 三、ALU举例 ALUALU能完成多种算术和逻辑运算。为了简化结能完成多种算术和逻辑运算。为了简化结 构,构,ALUALU在加法器的基础上扩展其他运算功能。在加法器的基础上扩展其他运算功能。 以一个以一个4 4位片位片ALU SN74181ALU SN74181为例:为例: 1. 1. SN74181SN74181外特性外特性 第二节算术逻辑运算部件ALU 2. SN74181SN74181内部特性(详见书内部特性(详见书63 63页表页表3 31)1) 当选择当选择M M1 1时,时,ALUALU执行逻辑运算执行逻辑运算 当选择当选择M M0 0时,时,ALUALU执行算术运算执行算术运算 第二节算术逻辑运算部件ALU 3. SN74181功能表 列出了这种ALU可以完成的16种不同的算术或逻辑运算操作。 例题:P64页 表32 4. 用SN74181构成多位的ALU 每片74181可作为一个4位的小组,组间可以采用串行进位也可采 用并行进位。 书65页图38既是一个16位并行进位ALU结构。 下课下课 第二节算术逻辑运算部件ALU 第三节 定点乘法运算 在计算机中实现乘除法运算,有三种方式: (1) 软件实现:在低档微机中无乘除指令,只能 用乘法或除法子程序实现。 (2) 在原有实现加减运算的ALU的基础上增加一些逻 辑线路以实现乘除运算。 (3) 设置专用的乘除法器:主要用于要求快速乘除运 算的机器中。 一、无符号数一位乘一、无符号数一位乘 手工乘法:设 X=0.1101 Y=0.1011 求XY= ? 0. 1 1 0 1 0. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0. 1 0 0 0 1 1 1 1 X Y=+ 0. 1 0 0 0 1 1 1 1 如果在计算机中实现乘法计算,要解决: 1.局限于加法器的两个输入端。 2.结合移位,N位加法器可实现2个N数相乘。 3.完成运算后,寄存器中保存乘积的高位部分,乘数寄存器中 保存乘积的低位部分。 第三节 定点乘法运算 由于计算机的局限性,多位数的乘法要执行多次加法而 且要浪费大量的器件,因此在计算机中乘法运算采用的方法 是: 将n位乘转换成n次“累加与移位”,也就是每一步只求 一位乘数所对应的新部分积,并与原部分积作一次累加,然 后右移一次。 计算机内实现原码一位乘:计算机内实现原码一位乘: 无符号数一位乘的算法流程框图为下图: 其中:图中使用了三个寄存器A、B和C B用来存放被乘数,C存放乘数。 A初值为0,然后存放部分积,最后存放乘积高位 第三节 定点乘法运算 开始 N位被乘数B N位乘数C,0 A C0= 1 ? A+B AA+0 A A、C右移一位 重复n 次 结束 Y N N Y 设 X=1101 Y=1011 求XY= ? B(被乘数) C0 A C(乘数) C0 A C(乘数) 0 0 0 0 0 1 0 1 1 C0 0 B 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 C0 1 B 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 C0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 C0 1 B 1 1 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 001 0 1 1 初始 状态 第一 节拍 第二 节拍 第三 节拍 第四 节拍 11011011110110111000111110001111 第三节 定点乘法运算 硬件实现无符号数一位乘 软件实现无符号数一位乘 可用子程序实现乘法运算。算法仍然是将乘法化为 多次累加和移位 二、带符号数一位乘 定点原码一位乘的方法和无符号数的方法一样 。 实现方法是将符号位与数值位分别处理 一般带符号数的运算用补码比较方便,可以先 讨论论补码一位乘的算法。 第三节 定点乘法运算 校正法 设X补= X0X1X2 Xn,Y补= Y0Y1Y2 Yn (1)当Y0,即Y0=0时, X补Y补= X补Y= XY补 (2)当Y0 0 0 0 1 0 A0 0 0 0 1 0 0 0 10 0 1 A0A0,商商=1=1。 0 0 1 00 0 1 0 0 0 1 0 0 1 A A、C C左移一位左移一位 B B 1 1 0 11 1 0 1 减除数减除数 A0 1 1 1 1 A0 1 1 1 1 0 0 1 00 0 1 0 A0A0,不够减,商不够减,商=0=0。 B B 0 0 1 1 0 0 1 1 恢复余数,加除数。恢复余数,加除数。 。 例1 用恢复余数法计算: 000010000011 除数0011B ;被除数放到A、C中 除数的补码1101 商余数 对于小数来说,运算规则: 1. 第一次做减法即-B补,用来判别溢出的情况 2. 当某一次求商,它减得的差值为负,本次商上0, 同时把除数加到差上,恢复余数为原来得正值, 然后再左移。 3. 当某一次求商,减得的差值为正,就没有恢复余 数的操作,上商为1,余数左移一位。 4. 注意余数一般是通过n次左移后得出的结果,那么 真正的结果应该是这个数2n 5. 例题:书P-74 2. 无符号数不恢复余数法 当余数为正时,商上1,求下一位商的办法是 余数左移一位,再减去除数; 当余数为负时,商上0。求下一位商的办法是 余数左移一位,再加上除数。 如果最后一次上商为0,而又需得到正确余数 则在这最后一次仍需恢复余数。 开始 被除数 A 、 C 除数 B A 0 ? A、C左移一位 A+B A 重复n-1 次 ? 结束 Y N A 、 C左移一位 A B A Y N 商0:0 C 0 商1:1 C 0 A、C左移一位 A-B A A 0 ? N A+B A 对于整数 而言 对于小数来说,运算规则: 1. 第一次做减法即-B补,用来判别溢出的情况 2. 当某一次求商,它减得的差值为负,本次商上0, 然后左移,并且加上除数。 3. 当某一次求商,减得的差值为正,上商为1,余数 左移一位,然后-Y补。 4. 注意余数一般是通过n次左移后得出的结果,那么 真正的结果应该是这个数2n 5. 如果最后一次的余数为负,正确的余数应为Y 恢复后的正余数2n 。 6. 用不恢复余数除法完全可以代替恢复余数除法, 且n位数除以n位数,只用做n1次加减法,n次 移位就可以了,缩短了除法时间。 被除数(余数)A 商 C 操作说明 0 0 1 0 1 1 0 0 0 0 初始状态 )1 1 0 0 1 1 + Y补 1 1 1 1 1 0 0 0 0 0 0不够减,商上0, 1 1 1 1 0 0 0 0 0 0 左移 )0 0 1 1 0 1 + Y 0 0 1 0 0 1 0 0 0 0 1够减,商上1 0 1 0 0 1 0 0 0 0 1 左移 )1 1 0 0 1 1 + Y补 0 0 0 1 0 1 0 0 0 1 1 够减,商上1 0 0 1 0 1 0 0 0 1 1 左移 )1 1 0 0 1 1 + Y补 1 1 1 1 0 1 0 0 1 1 0不够减,商上0 1 1 1 0 1 0 0 1 1 0 左移 )0 0 1 1 0 1 + Y 0 0 0 1 1 1 0 1 1 0 1 够减,商上1 例2 X= 0.1011,Y= 0.1101, 求X/Y =? -Y补= 11.0011 商 余数 X/Y=0.1101 余数0.0111x2-4 需要说明的问题: 对于定点小数除法,先要比较除数和被除数的绝 对值的大小,用来检查是否有商溢出,所以此时 第一步通常是B补。 商的符号为相除二数的符号的半加和 被除数的位数可以是除数的两倍,低位的数值部 分开始时放在商寄存器中。 然后在运算过程中,放被除数和商的寄存器同时 移位,并将商寄存器中的最高位移到被除数寄存 器的最低位。 实现除法的逻辑电路与乘法的逻辑电路极相似, 但在A寄存器中放被除数/余数,B寄存器放除数, C寄存器放商。 第四节 定点除法运算 3. 软件实现无符号数除法 在无除法指令的机器中,可用子程序实现除法运算。 二、带符号数一位除 实现符号数一位除的一种方法是: 将被除数和除数的绝对值按无符号数除法得到商及 余数;若两数异号,商符取负,否则取正;余数符 号与被除数符号相同。 一般符号数用补码表示,所以我们直接用补码进行 进行除法运算。 补码一位除(补码不恢复余数法)为: 第四节 定点除法运算 参加运算的数用补码表示,符号位参加运算 首先将被除数左移一位,若被除数与除数同号,求商时 用移位后的被除数高位部分减去除数;若异号,则用移 位后的被除数高位部分加上除数。 若余数与除数同号,上商1,下次左移一位后作余数减 除数操作;若异号,上商0,下次左移一位后作余数加 除数操作。 商的修正。将商最末位恒置1,这样在商的末位上可能 存在误差,但将商与余数当作一个整体看待则是没有误 差的。 商的符号。如果第一步操作不发生溢出,得到的就是正 确的商符。 第五节 浮点算术运算 浮点数通常可写成:M2E 其中: M为该浮点数的尾数,一般为绝对值小于1的 规格化二进制小数,用原码或补码表示 E是该浮点数的阶码,为二进制整数,用移码 或补码表示。阶的底可用2、8或16,常用2。 一、浮点加减运算 1. 运算规则及硬件实现 设有2个浮点数:X= MX2EX Y= MY2 EY 需要5个步骤才能完成加减运算: 第五节 浮点算术运算 (1) 对阶操作: 2个浮点数的阶码可能不同,要对齐后才能运算。 对阶的规则是: 阶码小的数向阶码大的数对齐。 一般方法是用减法比较,即求: E=EX-EY E=0,表示两数阶码相等,不需对阶。 若0,则将原来阶码小的数的尾数右移E位, 并将其阶码值加上E ;尾数右移时,对原码形式 的尾数,符号位不参加移位,尾数最高有效位补0 ;对补码形式的尾数,符号位保持不变并参加右 移。 尾数右移后,应对移掉的最高位进行舍入,常用0 舍1入法或恒置1法。 第五节 浮点算术运算 (2) 实现尾数的加(减)运算: 完成对阶后,按定点数加减运算规则求两数的和 (差) (3) 结

温馨提示

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

评论

0/150

提交评论