第3章运算与运算器_第1页
第3章运算与运算器_第2页
第3章运算与运算器_第3页
第3章运算与运算器_第4页
第3章运算与运算器_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

BeyondTechnology计算机组成原理大连东软信息学院精品课程第3章运算与运算器本章线索3.1逻辑运算及其实现与:只有当决定事物结果的所有条件全部具备时,结果才会发生。或:当决定事物结果的几个条件中,只要有一个或一个以上条件得到满足,结果就会发生。非:结果总是和条件呈相反状态。与或非与非或非异或同或3.1逻辑运算及其实现例1:X=10101011,Y=11100001,求Z1=X∙Y,Z2=X+Y,和。所以Z1=10100001,Z2=11101011,=010101000,=00011110。逻辑乘是什么运算?逻辑加是什么运算?3.2定点算术运算——定点加减法补码加减法[X+Y]补=[X]补

+[Y]补[X–Y]补=[X]补

+[–Y]补[-Y]补=末位加1

补码加减法特点

补码进行加减运算可变减为加,使运算器中只需要设一个加法器即可。符号位当作数的一部分参加运算,能得到运算结果的正确符号。定点小数的补码加法运算以2为模,定点整数的加法以2n+1为模。即符号位向更高一位的进位会自然丢失,并不影响运算结果的正确性。例1已知X=+0.10011,Y=-0.01011,用补码计算X+Y解:X=+0.10011,Y=-0.01011[X]原

=0.10011,[Y]原

=1.01011,[X]补

=0.10011,[Y]补

=1.10101,根据公式:[X]补

+[Y]补=[X+Y]补[X]补

=0.10011+[Y]补

=1.10101[X+Y]补

=0.01000所以,[X+Y]补

=0.01000,X+Y=+0.010003.2定点算术运算——定点加减法例2:X=+11010,Y=-10101,用补码的加法求Z=X+Y。[X]补=011010,[Y]补=101011[X+Y]补=[X]补+[Y]补=011010+101011=000101所以Z=X+Y=+00101例3:X=+10101,Y=-11010,用补码的加法求Z=X+Y。[X]补=010101,[Y]补=100110[X+Y]补=[X]补+[Y]补=010101+100110=111011所以Z=X+Y=-001013.2定点算术运算——定点加减法例4:已知X=-11001,Y=-10011,用补码的加法求Z=X-Y。[X]补=100111,[-Y]补=010011[X-Y]补=[X]补+[-Y]补=100111+010011=111010所以Z=X-Y=-00110例5:已知X=-10011,Y=-11001,用补码的加法求Z=X-Y。[X]补=101101,[-Y]补=011001[X-Y]补=[X]补+[-Y]补=101101+011001=000110所以Z=X-Y=+001103.2定点算术运算——定点加减法例6:已知X=-11001,Y=-10011,用补码的加法求Z=X-Y。[X]补=100111,[-Y]补=010011[X-Y]补=[X]补+[-Y]补=100111+010011=111010所以Z=X-Y=-00110例7:已知X=-10011,Y=-11001,用补码的加法求Z=X-Y。[X]补=101101,[-Y]补=011001[X-Y]补=[X]补+[-Y]补=101101+011001=000110所以Z=X-Y=+001103.2定点算术运算——定点加减法例8:X=-0.1101,Y=0.0111,用补码的加法求Z=X+Y。[X]补=1.0011,[Y]补=0.0111[X]补+[Y]补=1.0011+0.0111=1.1010[X+Y]原=[[X]补+[Y]补]补=[1.1010]补=1.0110所以Z=X+Y=-0.0110练习(结果用真值验算)(1)已知:X=+0.125,Y=+0.625,用补码运算X+Y=?(2)已知:X=-0.0625,Y=-0.75,用补码运算X+Y=?(3)X=+25,Y=-5,用补码运算X+Y=?(4)X=-9,Y=+20,用补码运算X+Y=?观察上述例题如何求负数的补码?先求出-Y,再求[-Y]补采用适合计算机实际运算的方法[-Y]补=末位加1。计算机里如何存储数据?3.2定点算术运算——定点加减法例9:X=+0.10111,Y=+0.10001,用补码的加法求Z=X+Y。[X]补=0.10111,[Y]补=0.10001[X+Y]补=[X]补+[Y]补=0.10111+0.10001=1.01000两正数相加,结果却是负的,显然不对。例10:X=-0.10111,Y=-0.10001,用补码的加法求Z=X+Y。[X]补=1.01001,[Y]补=1.01111[X+Y]补=[X]补+[Y]补=1.01001+1.01两负数相加,结果却是正的,显然不对。例3.3:例3.4:

[X]补

=0.11011[X]补

=1.10001+[Y]补

=0.11111+[Y]补

=1.00111[X+Y]补

=1.11010[X+Y]补

=0.11000两正数相加,结果为负数两负数相加,结果为正数例3.5:例3.6:

[X]补

=0.11011[X]补

=1.10001+[-Y]补

=0.10101+[-Y]补

=1.00011[X-Y]补

=1.10000[X-Y]补

=0.10100正数减负数,结果为负数负数减正数,结果为正数什么情况下会有溢出产生什么情况下不会产生溢出同号数相加、异号数相减会产生溢出同号数相减、异号数相加不会产生3.2定点算术运算——定点加减法溢出:当运算的所得结果超过了数据的表示范围,无法得到正确结果的情况。溢出的分类上溢(正溢):两个正数相加,结果大于计算机所能表示的最大正数,称为上溢。下溢(负溢):两个负数相加,结果小于计算机所能表示的最小负数,称为下溢。溢出的判断:变形补码符号位的进位

3.1定点算术运算——定点加减法变形补码判断溢出:运算结果的两位符号位不相同,表示产生了溢出,结果不正确。符号位为01表示结果正溢出,符号位为10表示结果负溢出。若得到运算结果的两位符号位相同,结果正确。符号位为00表示结果是一个正数,符号位为11表示结果是一个负数。变形补码运算规律[X+Y]变形补码=[X]变形补+[Y]变形补[[X]变形补]变形补=[X]原

[X-Y]变形补=[X+(-Y)]变形补=[X]变形补+[-Y]变形补3.2定点算术运算——定点加减法例11:已知X=+0.1010,Y=+0.1001,用变形补码进行运算,并判定是否产生溢出。[X]变形补=00.1010,[Y]变形补=00.1001[X+Y]变形补=[X]变形补+[Y]变形补=00.1010+00.1001=01.001101.0011的两个符号位为“01”,表示产生了正溢出例12:已知X=-0.1010,Y=-0.1001,用变形补码进行运算,并判定是否产生溢出。[X]变形补=11.0110,[Y]变形补=11.0111[X+Y]变形补=[X]变形补+[Y]变形补=11.0110+11.0111=10.110110.1101的两个符号位为“10”,表示产生了负溢出3.2定点算术运算——定点加减法例13:已知X=+0.1010,Y=+0.1001,用变形补码进行运算,并判定是否产生溢出。[X]变形补=00.1010,[Y]变形补=00.1001[X+Y]变形补=[X]变形补+[Y]变形补=00.1010+00.1001=01.001101.0011的两个符号位为“01”,表示产生了正溢出例14:已知X=-0.1010,Y=-0.1001,用变形补码进行运算,并判定是否产生溢出。[X]变形补=11.0110,[Y]变形补=11.0111[X+Y]变形补=[X]变形补+[Y]变形补=11.0110+11.0111=10.110110.1101的两个符号位为“10”,表示产生了负溢出3.2定点算术运算——定点加减法例15:已知X=+0.0101,Y=+0.0111,用变形补码进行运算,并判定是否产生溢出。[X]变形补=00.0101,[Y]变形补=00.0111[X+Y]变形补=[X]变形补+[Y]变形补=00.0101+00.0111=00.1100两个符号位为“00”,表示没有产生溢出X+Y=(+0.1100)2=(+0.75)10例16:已知X=-0.0010,Y=-0.1001,用变形补码进行运算,并判定是否产生溢出。[X]变形补=11.1110,[Y]变形补=11.0111[X+Y]变形补=[X]变形补+[Y]变形补=11.1110+11.0111=11.0101两个符号位为“11”,表示没有产生溢出X+Y=(-0.1011)2=(-0.6875)10例3.7:例3.8:

[X]补

=00.11011[X]补

=11.10001+[Y]补

=00.11111+[Y]补

=11.00111[X+Y]补

=01.11010[X+Y]补

=10.11000例3.9:例3.10:

[X]补

=00.11011[X]补

=11.10001+[-Y]补

=00.10101+[-Y]补

=11.00011[X-Y]补

=01.10000[X-Y]补

=10.10100思考:进位会不会进到最左边一位呢?思考2:采用变形补码会损失什么呢?3.2定点算术运算——定点加减法符号位的进位判断溢出最高数值位向符号位的进位叫作“进位入”,记作Cn-1。符号位产生的进位叫作“进位出”,记作Cn。当Cn和Cn-1相同时,即同为0或同为1,结果正确,未发生溢出。当Cn=0,Cn-1=1时,表示产生了正溢出。当Cn=1,Cn-1=0时,表示产生了负溢出。小结计算机组成原理研究什么?运算规则溢出的判断人工——单符号位——双符号位规则的实现——硬件实现思考:加减运算用什么硬件实现?溢出如何判断和设计?全加器1位全加器(FA)的逻辑表达式为S=A⊕B⊕Ci-1,Ci=A·B+B·Ci-1+Ci-1·A,其中A和B表示两个一位加数,S表示全加和,Ci-1和Ci分别表示低位向本位的进位以及本位向高位的进位。补码加法器进位入进位出X=0.1101Y=0.1111代入计算之?001111011110思考:如何改成补码加减法器?一个1位数二进制B,和0异或?和1异或?如何改进电路?串行进位并行运算补码加法器X=0011Y=1101,代入计算之?001111010,做加法C-1=0,A和B做加法1,做减法C-1=1,A和B非做加法,再末位+1,将减法转换为加负数进位信号异或判断溢出3.2定点算术运算——定点乘法3.2定点算术运算——定点乘法原码乘法:符号位单独运算,将两个操作数的数码位相乘,最后给乘积冠以正确的符号。原码一位乘:从最低位开始,每次取一位乘数与被乘数相乘,最后累加结果。3.2定点算术运算——定点乘法例17:已知X=0.1001,Y=-0.1011,求Z=X∙Y。解:[X]原

=0.1001,

[Y]原

=1.1011先求结果的符号,

Zf=Xf⊕Yf=0⊕1=1运算过程如右图所示,所以Z=X∙Y=-0.01100011。3.2定点算术运算——定点乘法原码一位乘运算流程3.2定点算术运算——定点乘法补码乘法:被乘数和乘数都以补码的形式表示,符号位不用单独计算,包含在运算结果中。补码一位乘运算公式:

[X]补∙

[Y]补=[X]补

∙Y=[X∙Y]补3.2定点算术运算——定点乘法例18:用Booth法求X∙Y,其中,X=-0.1101,Y=+0.1011。解:

[X]原=1.1101,

[X]补=1.0011,

[-X]原=0.1101,

[-X]补=0.1101,

[Y]补=0.1011运算过程如右图所示,所以[X∙Y]补=1.01110001,

即:X∙Y=-0.10001111。3.2定点算术运算——定点乘法补码一位乘运算流程3.1定点算术运算——定点除法3.2定点算术运算——定点除法原码一位除法:两个原码表示的数相除时,商的符号位是两数的符号位的异或,商的数值部分则是两数的绝对值相除所得到的商。恢复余数法:被除数(余数)依次减去除数,若不够减则需恢复余数,要恢复原来的余数,只要将当前的余数加上除数即可。加减交替法:在运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续向下运算。3.2定点算术运算

——定点除法例19:被除数X=

+0.1001,除数Y=

+0.1011,用恢复余数法求X/Y。解:

|X|=0.1001,

|Y|=0.1011,

[-|Y|]补

=1.0101先求结果的符号,Qf=Xf⊕Yf=0⊕0=0

运算过程如右图所示,商[|Q|]原

=0.1101,

所以Q=

+0.1101,

余数R=

+0.0001×2-4=0.00000001。原码恢复余数法运算流程3.2定点算术运算

——定点除法3.2定点算术运算

——定点除法例20:被除数X=

+0.1001,除数Y=

+0.1011,用加减交替法求X/Y。解:

|X|=0.1001,

|Y|=0.1011,

[-|Y|]补

=1.0101先求结果的符号,Qf=Xf⊕Yf=0⊕0=0

运算过程如右图所示,商[|Q|]原

=0.1101,

所以Q=

+0.1101,

余数R=

+0.0001×2-4=0.00000001。原码加减交替法运算流程3.2定点算术运算

——定点除法3.2定点算术运算——定点除法补码除法:当除数和被除数用补码表示时,判别是否够除,要比较它们的绝对值的大小。因此,若二数同符号,要用减法,若异号,则要用加法。。补码一位除运算公式:

[X/Y]补=[X]补/[Y]补例21:被除数X=-0.1001,除数Y=+0.1101,用补码加减交替法求X/Y。解:

[X]补=1.0111,

[Y]补=0.1101,

则[-Y]补=1.0011

运算过程如右图所示,[X/Y]补

=1.0101,

[R×24]补

=1.0010,

所以商Q=X/Y=-0.1011,余数R=-0.1110×2-4。3.2定点算术运算——定点除法补码加减交替法运算流程3.2定点算术运算——定点除法3.3浮点算术运算——浮点加减法3.3浮点算术运算——浮点加减法例22:

X=+0.111101×2-011,Y=-0.101001×2-010,求X+Y。解:

①对阶[X]补=1101,0.111101[Y]补=1110,1.010111根据小阶对大阶的原则,应将X的小阶改为与Y的大阶相同,为保持X的大小不变,应将X的尾数向右移一位,得[X]补=1110,0.011110末位的1舍掉[Y]补=1110,1.010111

温馨提示

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

评论

0/150

提交评论