资源预览内容
第1页 / 共106页
第2页 / 共106页
第3页 / 共106页
第4页 / 共106页
第5页 / 共106页
第6页 / 共106页
第7页 / 共106页
第8页 / 共106页
第9页 / 共106页
第10页 / 共106页
亲,该文档总共106页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章 运算方法和运算器,本章着重讨论两个大问题: 运算方法:即计算机中数值数据的运算规则 加减法(定点,浮点) (补码为重点) 移位运算 乘除法(定点,浮点) (难点) 逻辑运算 运算器的基本结构和工作原理: 着重讨论运算规则的具体物理实现(难点),规则,第五章 运算方法和运算器,5.1 定点加减运算 5.1.1原码加减法 原码加减运算规则(P94 ):要考虑符号和数值两部分 同号相加和异号相减:数值部分相加,结果的符号取被加(减)数符号; 异号相加和同号相减:数值部分相减,结果的符号取绝对值大的数的符号,但数值部分相减,要将减数变补,变为加法进行。 对于定点机,两数同号相加和异号相减,结果可能溢出,须作溢出判断。一般机器溢出后,提示溢出信息,然后停机。 原码一般不用来做加减运算,而多用来做乘除运算,做加减运算时,多用补码。,第五章 运算方法和运算器,5.1 定点加减运算 5.1.2补码加减法运算(重点) 引入补码后,不仅减法能变成加法,而且符号位能同数值位一样参与加运算,这样可以大大简化运算器的结构。 1、补码加减运算规则 参加运算的两个操作数均用补码表示; 符号位作为数的一部分参加运算; 若做加法,则两数直接相加;XY补= X补Y补 若做减法,则将被减数与减数的机器负数相加; XY补= X补Y补 (mod 2,一位符号位)) 运算结果用补码表示。,第五章 运算方法和运算器,2. 变补的概念:对所有二进制位(包括符号位)均取反,然后在末尾在加1 已知Y补,求Y补=Y补变补的方法是: 对Y补,包括符号位在内,各位取反,末位加1。 -Y补被称为Y补的机器负数,由Y补求-Y补的过程称为对Y补变补(求补), 补码: 一个负数由原码表示转换成补码表示时 符号位是不变的,仅对数值位的各位变反,末尾加“1”。 变补:则不论这个数的真值是正是负, 一律连同符号位一起变反,末尾加1。Y补表示的真值如果是正数,则变补后-Y补所表示真值变为负数,反之亦然 。 例如:Y补= 1.01101 Y补= 0.10011 3、溢出判断 一般用双符号位进行判断: 符号位00,表示正数, 符号位11,表示负数 结果的符号位为01时,称为上溢; 结果的符号位为10时,称为下溢,第五章 运算方法和运算器,例2: X=0.1011 Y=0.1001 求XY=? 解:X补=00.1011 Y补=00.1001 -Y补=11.0111,两符号位相异,正溢出第一符号位为正确符号,X+Y补 01.0100,X-Y补 100.0010,X+Y= 溢出,X-Y= + 0.0010,两符号位相同,无溢出,第五章 运算方法和运算器,例3: X= - 0.1011 Y= - 0.1001 求XY=? 解:X补=11.0101 Y补=11.0111 -Y补=00.1001,两符号位相异,负溢出第一符号位为正确符号,X+Y补 110.1100,X-Y补 11.1110,X+Y= 溢出,X-Y= - 0.0010,两符号位相同,无溢出,第五章 运算方法和运算器,总结: 1.用模4补码进行加法运算,结果的两符号位 相异时,表示溢出;01正溢出、10 负溢出; 相同时,表示不溢出 2.模4补码相加的结果,不论溢出与否,第一符号位始终指示正确的符号 建议:以模4补码做习题!,第五章 运算方法和运算器,练习: 求XY=? 1. X=0.1001 Y=-0.1100 X+Y=-0.0011 X-Y 溢出 2. X=-0.0110 Y=0.1101 X+Y=0.0111 X-Y 溢出 3. X=-0.1010 Y=-0.1001 X+Y 溢出 X-Y=-0.0001,第五章 运算方法和运算器,三、反码加减法运算 1、反码加减运算规则 参加运算的两个操作数均用反码表示; 符号位作为数的一部分参加运算; 若做加法,则两数直接相加;X反+Y反=X+Y反 若做减法,则将被减数与连同符号位一起变反后的减数相加; X反+-Y反= X-Y反 运算时如果符号位产生进位,则在末位加1,成为循环进位; 运算结果用补码表示。 对于补码:,X+Y补 100.1011,第五章 运算方法和运算器,三、反码加减法运算 2、说明: 反码加法,规则同补码加法,但若符号位有进位,需将此进位加到末位循环进位 由Y反如何求-Y反? 对Y反,包括符号位,各位求反。,第五章 运算方法和运算器,例1:X=0.1101 Y=-0.0010 用反码规则求XY=? 解:X反00.1101 Y反11.1101 -Y反00.0010,X+Y反 100.1010,X-Y反 00.1111,X+Y= 0.1011,X-Y= 0.1111,第五章 运算方法和运算器,例2:X=0.1011 Y=-0.0101 用反码规则求XY=? 解:X反00.1011 Y反11.1010 -Y反00.0101,X+Y反 100.0101,X-Y反 01.0000,X+Y= 0.0110,X-Y= 溢出,第五章 运算方法和运算器,练习: 1、 X=-0.1100 Y=-0.0010 用反码规则求XY=? 解:X反11.0011 Y反11.1101 -Y反00.0010,X-Y反 11.0101,X+Y= -0.1110,X-Y= -0.1010,X+Y反 111.0000,第五章 运算方法和运算器,练习: 2、 X=-0.1101 Y=0.0110 用反码规则求XY=? 解:X反11.0010 Y反00.0110 -Y反11.1001,X-Y反 110.1011,X+Y= -0.0111,X-Y= 溢出,X+Y反 11.1000,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 1.溢出的产生 在补码加减运算中,有时会遇到这样的情况: 两个正数相加,而结果的符号位却为1(结果为负); 两个负数相加,而结果的符号位却为0(结果为正)。,例1: 设:X=1011B=11D,Y=111B=7D 则:X补=0,1011,Y补=0,0111 有: 0,1 0 1 1 + 0,0 1 1 1 1,0 0 1 0 得出结果:X+Y补=1,0010, X+Y=-1110B=-14D 两正数相加结果为-14D,显然是错误的。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 1.溢出的产生 在补码加减运算中,有时会遇到这样的情况: 两个正数相加,而结果的符号位却为1(结果为负); 两个负数相加,而结果的符号位却为0(结果为正)。,例2: 设:X=-1011B=-11D,Y=-111B=-7D 则:X补=1,0101 Y补=1,1001 有: 1,0 1 0 1 + 1,1 0 0 1 0,1 1 1 0 得出结果:X+Y补=0,1110,X+Y=1110B=14D 两负数相加结果为14D,显然也是错误的。,原因:在于两数相加之和的数值已超过了机器允许的表示范围。 字长为n+1位的定点整数(其中一位为符号位),采用补码表示: 当运算结果大于2n-1 或小于-2n时,就产生溢出。 设参加运算的两数为X、Y,做加法运算。 若X、Y异号,不会溢出。 若X、Y同号,运算结果为正且大于所能表示的最大正数或运算结果为负且小于所能表示的最小负数 (绝对值最大的负数)时,产生溢出。 溢出分为2种:正溢和负溢。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 1.溢出的产生 在补码加减运算中,有时会遇到这样的情况: 两个正数相加,而结果的符号位却为1(结果为负); 两个负数相加,而结果的符号位却为0(结果为正)。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2. 溢出检测方法 采用一个符号位判断 采用一个符号位加法运算时检测溢出的方法: 两正数相加,结果为负表明产生正溢;即当Xs=Ys=0,Ss=1时,产生正溢。 两负数相加,结果为正表明产生负溢。即当Xs=Ys=1,Ss=0时,产生负溢。 因此可得出加法运算时溢出的判断条件为:溢出=XsYsSs+XsYsSs 采用一个符号位减法运算时检测溢出的方法: 两数相减,只有X,Y异号时才可能溢出; 因此可得出减法运算时溢出的判断条件为:溢出=XsYsSs+XsYsSs,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2. 溢出检测方法 采用进位位判断 两正数相加,当最高有效位产生进位(C1=1)而符号位不产生进位(Cs=0)时,发生正溢; 两负数相加,当最高有效位没有进位(C1=0)而符号位产生进位(Cs=1)时,发生负溢。 溢出的判断条件为:溢出=CsC1+CsC1=CsC1,例1: 设:X=1011B=11D,Y=111B=7D 则:X补=0,1011,Y补=0,0111 有: 0, 1 0 1 1 + 0, 0 1 1 1 1, 0 0 1 0,C1=1,Cs=0,例2:设:X=-1011B=-11D,Y=-111B=-7D 则:X补=1,0101 Y补=1,1001 有: 1, 0 1 0 1 + 1, 1 0 0 1 0, 1 1 1 0,C1=0,Cs=1,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2. 溢出检测方法 采用变形补码(双符号位补码)判断 变形补码定义: 小数“变形补码”的定义为:X补 = 整数“变形补码”的定义为:X补 = (设字长为:n+1位) 变形补码的性质: 当-1X1时,数X的“模4补码”的两个符号位相同,00表示正号,11 表示负号,其数值位与补码相同。当符号位为01或10时,表示数值溢出:为01时表示两正数之和大于等于1的情况,称为数值“上溢”;为10 时表示两负数之和小于-1的情况,称为数值“下溢”。 “模4补码”表示中,0有唯一的补码:00,000000,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2. 溢出检测方法 采用变形补码(双符号位补码)判断 双符号位的含义如下: Ss1Ss2=00 结果为正数,无溢出 Ss1Ss2=11 结果为负数,无溢出 Ss1Ss2=01 结果正溢 Ss1Ss2=10 结果负溢 例如:字长为5位,数的表示范围为-1615,采用变形补码(双符号位)运算,则有: 练习:11D+5D -11D+(-5D),11+7=18(正溢) 0 0, 1 0 1 1+ 0 0, 0 1 1 1 0 1, 0 0 1 0,-11+(-7)=-18(负溢) 1 1, 0 1 0 1+ 1 1, 1 0 0 1 1 0, 1 1 1 0,溢出的判断条件为:溢出=Ss1Ss2,第五章 运算方法和运算器,5.3 移位运算和舍入操作 5.3.1带符号数的移位操作 意义 移位运算是计算机中最基本、最常见的运算操作之一,任何计算机都含有移位指令。 逻辑移位:逻辑移位的对象是没有数值含义的一组二进制代码,因此移位时不必考虑符号问题,左移、右移空位都补0。 算术移位:寄存器中带符号数的移位,移位时,符号位保持不变,仅数量变化。计算机中的字长固定,左、右移时,出现空位怎么办? 左移:x = 2x 右移:x =,下面仅讨论算术移位,第五章运算方法和运算器,2.算术移位规则 前提:移位后,符号位保持不变 正数 正数的符号位为0,且x原=x反=x补 (x 0)故进行算术移位时,出现的空位均添补0。 正数:左移、右移都补0 x原=0.1001 2x原=0.0010 x反=0.0011 1/2x反=0.0001 x补=0.1001 2x补=0.0010,第五章 运算方法和运算器, 负数 原码 除符号位外,原码的数值部分与真值相同,故移位后都补0。 x原=1.0111 2x原=1.1110 1/2x原=1.0011 反码 除符号位外,反码的数值部分与原码相反,故移位后都补1 x反=
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号