运算方法与运算部件08本

上传人:san****019 文档编号:70918557 上传时间:2019-01-19 格式:PPT 页数:146 大小:1.44MB
返回 下载 相关 举报
运算方法与运算部件08本_第1页
第1页 / 共146页
运算方法与运算部件08本_第2页
第2页 / 共146页
运算方法与运算部件08本_第3页
第3页 / 共146页
运算方法与运算部件08本_第4页
第4页 / 共146页
运算方法与运算部件08本_第5页
第5页 / 共146页
点击查看更多>>
资源描述

《运算方法与运算部件08本》由会员分享,可在线阅读,更多相关《运算方法与运算部件08本(146页珍藏版)》请在金锄头文库上搜索。

1、计算机组成原理,第三章 运算方法与运算部件,计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU 计算机的运算可以分为: 数值运算和非数值运算 数值运算的基础是定点与浮点,其中以加法为核心,1. 定点加减运算,一、补码加减运算 计算机中,常用补码进行加减运算。 补码可将减法变加法进行运算。 补码运算特点:符号位与数值位一同运算。 运算的基本规则: X补+Y补 = X+Y补 X-Y补= X补-Y补 = X补+-Y补 由Y补求得-Y补 的方法:对Y补(包含符号位)求反且末位加1。,1.X补+Y补 = 2 X0+X + 2 Y0+Y=2(X0+Y0)+(X+Y) (1)若X0Y0 =00,

2、则 X补+Y补 = X+Y= X+Y补; (2)若X0Y0 =01或10,则 X补+Y补=2+(X+Y) 当X+Y0时, 2+(X+Y)2,进位丢失,得: X补+Y补 =X+Y= X+Y补; 当X+Y X+Y -1 ,2 2+(X+Y) 1 此时,X补+Y补 = 2+(X+Y) = X+Y补(2自然丢失),在模2下,设X补= X0X1X2 Xn, Y补= Y0Y1Y2 Yn 则X补=2 X0+X , Y补=2 Y0+Y,证明:,2、 X补+Y补 = X+Y补 Y补 = X+Y补-X补 又X-Y补=X+(-Y)补 = X补+-Y补 -Y补 = X-Y补-X补 +得: Y补 +-Y补 = X+Y补

3、-X补 +X-Y补-X补 = X+Y+ X-Y补-X补-X补= X+X补-X补-X补=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补= 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,真值:X+Y= (+1100001)2 = +97,例2:已知机器字长n=8,X=-44, Y=-53,求X+Y=?,解:44补=00101100,53补=0

4、0110101 X补=-44补=11010011+1=11010100, Y补=-53补=11001010+1=11001011 X补=1 1 0 1 0 1 0 0 + Y补=1 1 0 0 1 0 1 1 X+Y补= 1 1 0 0 1 1 1 1 1 超出8位,舍弃模值 X+Y=(-1100001)2=-97,例3:已知机器字长n=8,X=0.1101, Y=0.0110,求X-Y=?,解:X补= 0.1101000,Y补=0.0110000, -Y补=1.1010000 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

5、0 0 自然丢失 X-Y补= (0 .0111000)2 ,X-Y= (0 .0111)2,例4:已知机器字长n=8, X=- 0.1101, Y=- 0.0110求X-Y=?,解:X补=1.0011000,Y补=1.1010000 -Y补=0.0110000 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 X-Y补= (1. 1 0 0 1 0 0 0)2, X-Y= (-0. 0 1 1 1 )2,2. 溢出的检测,溢出:运算结果超出了计算机所能表示的数据范围。 正溢(上溢):运算结果为正而绝对值超出了表示的范围。 负

6、溢(下溢):运算结果为负而绝对值超出了表示的范围。 定点数的溢出根据数值本身判断。,例:已知机器字长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位计算机数值表达范围:(-128+127),溢出判断规则与判断方法,两个相同符号数相加,其运算结果符号与被加数相反则产生溢出; 两个相

7、异符号数相减,其运算结果符号与被减数相反则产生溢出。 相同符号数相减,相异符号数相加不会产生溢出。 溢出判断方法:进位判断法,双符号位法。,(1) 进位溢出判断法 SC,两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值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 = 1 有溢出 S C=01 正溢; S C=10 负溢 OVR =

8、SC = 0 无溢出,(2) 双符号位(变形补码)溢出判断法,设第一符号位Sf1,第二符号位Sf2, Sf1 Sf2 双符号含义: 0 0 表示运算结果为正数; 0 1 表示运算结果正向溢出; 1 0 表示运算结果负向溢出; 1 1 表示运算结果为负数。 即:溢出 OVR = Sf1Sf2 = 1 有溢出 OVR = Sf1Sf2 = 0 无溢出 左边第一位的Sf1为运算结果的真正符号位。,例1:X=0.1001,Y=0.0101,求X+Y,解: X补= 00.1001 +Y补= 00.0101 X+Y补= 00.1110 两个符号位相同,运算结果无溢出。 X+Y=+0.1110,例2:X=

9、- 0.1001,Y= - 0.0101, 求 X+Y =?,解: X补= 11.0111 + Y补= 11.1011 X+Y补 =1 11 .0010 丢掉 两个符号位相同,运算结果无溢出。 X+Y= - 0.1110,例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、个符号位10不同,运算结果负向溢出。,例4:X= - 0.1011,Y= 0.0111, 求 X-Y补=?,补码加减法运算规则如下: 参加运算的操作数用补码表示。 符号位与数值位一样参加运算。 如果是加法运算,则直接相加 如果是减法,那么减数连同符号 位一起取反,然后末位加1。 运算的结果仍然是补码形式。,移位运算,逻辑移位 循环移位 算术移位,逻辑移位,特点 移位操作对象不存在符号和量值的差别,非数值或无符号数 仅限于数码位置的变化 规则 左移或右移时高位或低位补0 移出位被丢弃 举例: 逻辑右移:0101 - 0010,循环移位,特点 移位操作对象不存在符号和量值的差别,非数值或无符号数

11、仅限于数码位置的变化 规则 左移或右移时高位或低位补0 移出位被置于低位或高位 举例: 循环右移:0101 - 1010,移位时,数的符号位不变 算术运算数的移位操作会引起数值变化 右移一位,相当于带符号的数除以2(乘以1/2) 左移一位,相当于带符号的数乘以2 对于正数 原码、反码和补码均相同,移位时只需要在末端补“0”。 对于负数的移位,不同码制的处理不同,算术移位,算术移位,特点 移位操作对象存在符号和量值的差别,即:有符号数 不仅限于数码位置的变化,内涵是数值扩大或缩小两倍 规则 决定于编码方式,原码算术移位,规则 1. 符号位不变 2. 左移:仅移动量值位,低位补0 3. 右移:仅移

12、动量值位,高位补0,原码 符号位不参与移位,只是绝对值移位,其末端补入0 例:算术右移运算,原码算术移位,原码 例:算术左移运算,原码算术移位,补码算术移位,规则 1. 符号位参与移位 2. 左移:低位补0 3. 右移:高位补原有符号位 溢出 左移、符号位发生改变,问题: 算术移位怎样才能保持正确的符号和正确的移位值?,补码右移 例:设x= -1011000,则x补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下:,不移位 x = -1011000 x补= 10101000 右移一位 x = -0101100 x补= 11010100 右移二位 x = -001

13、0110 x补= 11101010,补码算术移位,补码右移:符号位也随之右移且符号位不变 例:,补码算术移位,补码左移 例:设x= -0010110,则x补=11101010 ,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下:,不移位 x = -0010110 x补= 11101010 左移一位 2x = -0101100 2x补= 11010100 左移二位 4x = -1011000 4x补= 10101000,补码算术移位,补码左移 左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示

14、超出数的表示范围 为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位,补码算术移位,反码右移:符号位也随之右移且符号位不变,反码算术移位,反码左移 左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围 为了保持正确符号,往往采用具有两位或多位符号位的变形码,反码算术移位,已知x补=0.1011,y补=1.1011,求算术左移,逻辑左移、算术右移、逻辑右移后的值。,x算术左移后的值=1.0110(溢出) y算术左移后的值=1.0110 x逻辑左移后的值=1.0110 y逻辑左移后的

15、值=1.0110 x算术右移后的值=0.0101 y算术右移后的值=1.1101 x逻辑右移后的值=0.0101 y逻辑右移后的值=0.1101,补码移位举例,逻辑运算,1/0表示真或假,位运算 与运算:&,有0即0 或运算:|,有1即1 非运算:,0-1,1-0 异或运算:,同0异1,BCD码,二进制的缺点 小数部分在二进制下只能表示成n1*(1/2)+n2*(1/4)+n3*(1/8)+.+nn*(1/2n)的形式 造成精度损失 十进制数的二进制表示(BCD码) 维持十进制的进位数制特点 借用四位二进制数的十六个状态组合的其中十个状态来表示十进制数的09 方法:8421、2421、余3码、格雷码,BCD码,8421码 每位的权值分别为8、4、2、1 例如:(16)10表示为0001 0110 2421码 每位的权值分别为2、4、2、1 04与8421表示相同,59将高位置1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号