用变形补码计算x+y

上传人:wt****50 文档编号:49949987 上传时间:2018-08-05 格式:PPT 页数:95 大小:1.36MB
返回 下载 相关 举报
用变形补码计算x+y_第1页
第1页 / 共95页
用变形补码计算x+y_第2页
第2页 / 共95页
用变形补码计算x+y_第3页
第3页 / 共95页
用变形补码计算x+y_第4页
第4页 / 共95页
用变形补码计算x+y_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《用变形补码计算x+y》由会员分享,可在线阅读,更多相关《用变形补码计算x+y(95页珍藏版)》请在金锄头文库上搜索。

1、变形补码计算X+Y试题集第4章 机器数的运算方法及运算器目 录 4.1 机器数的加减运算及其实现4.2 定点乘法及其实现4.4 浮点数的算术运算4.5 运算器的组成和结构4.1 机器数的加减运算及其实现4.1.1 原码加法4.1.2 补码加法4.1.3 减法运算4.1.4 补码加减运算线路的实现 4.1.1 原码加法例4.1 设X=+10001,Y=+01011,求Z=X+Y 解:即,Z=+11100。1.符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。解:即,Z=-11100。例4.2 设X=-10001,Y=-01011,求Z=X+Y【例4.3】设X=

2、+10101,Y=-01010,求Z=X+Y解:先比较X与Y的绝对值,本题X|Y|,所以做减法|X- |Y|,结果是Z=+010114.1.1 原码加法2.符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。例4.2 设X=+01010,Y=-10111,求Z=X+Y解:先比较X与Y的绝对值,本题Y|X| , 所以做减法|Y-|X|,结果是Z=-01101用原码进行符号不同的两个数相加时有以下三步运算: 比较两个数的绝对值的大小; 绝对值大的数的绝对值减去绝对值小的数的绝对值; 结果赋以绝对值大的那个数的符号。4.1.1 原码加法4.

3、1.2 补码加法1.定点补码运算性质性质1 两数之和的补码等于两数补码之和。X+Y补=X补+Y补 补码运算特点:补码运算时,不用判断符号位,符号位与数值一块参与运算;两数相加之后,进位的最高位超出字长部分自动丢失。例4.5 设X=+11010,Y=-10101,用补码的加法求Z=X+Y解:加数和被加数的数值位都是5位,在数值位之前加1位符号位。这样,X补=011010,Y补=101011X+Y补= X补+Y补= 011010+101011=000101所以,X+Y=+00101。注意:在运算中,数值位和符号位有进位,本例采 用单符号位,以2为模,进位的1就丢掉了。例4.6 设X=+10101,

4、Y=-11010,用补码加法求Z=X+Y解:X补= 010101,Y补=100110X+Y补=X补+Y补= 010101+100110=111011所以,X+Y=-00101。性质2 一个负数的补码的补码就是这个负数的原码。X补补X原例4.7 设有两个定点小数 X=-0.10011,Y=-0.11001,求这两个负数补码的补码。解: X原1.10011 Y原1.11001X补1.01101 Y补1.00111X补补1.10011X原 Y补补1.11001Y原补码这一性质,计算机中计算结果的补码均可化成该数的原码。例4.8 设有两个定点小数 X=-0.1101,Y=0.0111,(-1X+Y0)

5、,求这两数之和。解:X补1.0011 Y补0.0111X补+Y补1.0011+0.01111.1010X+Y原X补+Y补补1.1010补1.0110所以,X+Y-0.0110用真值进行运算:X+Y-0.1101+0.0111-0.0110结果相同。用补码做加法是数值位连同符号位一起参加运算的。但是在有溢出的情况下,用一般的补码加法就得不到正确的结果,再看下面的例子。例4.9 设有两个定点小数X=+0.10111,Y=+0.10001,用补码的加法求Z=X+Y解:X补= 0.10111,Y补=0.10001X+Y补= X补+Y补=0.10111+0.10001=1.01000Z=X+Y=-0.1

6、1000两个大于0.5的正数相加,结果就为负值,结果显然是错误的。例4.10 设X=-0.10111,Y=-0.10001,用补码的加法求Z=X+Y解:X补=1.01001,Y补=1.01111X+Y补= X补+Y补=1.01001+1.01111=0.11000 Z=X+Y=+0.11000两个绝对值大于0.5的负数相加,结果为正值,这也是错误的。它们的和超出了机器数所能表示的最大范围,即产生了溢出,在有溢出的情况下,用一般补码加法就无法 得到正确结果。 例4.11 设有两个定点小数X=+0.10111,Y=-0.10001,用补码的加法求Z=X+Y解:X补= 0.10111,Y补=1.01

7、111X+Y补= X补+Y补=0.10111+1.01111=0.00110所以,Z=+0.00110,没有发生溢出,结果是正确的。例4.12 设有两个定点小数X=-0.10111,Y=+0.10001,用补码的加法求Z=X+Y解:X补=1.01001,Y补=0.10001X+Y补= X补+Y补=1.01001+0.10001=1.11010X+Y补补=1.00110Z=X+Y=-0.00110所以,Z=-0.00110,没有发生溢出,结果也是正确的。2.变形补码加法变形补码是符号位用两位来表示的补码。变形补码的定义为 :对于变形补码,补码的加法性质公式同样适用,即:X+Y变形补= X变形补+

8、Y变形补X 变形补 变形补X原用双符号位进行判断,若和的两个符号位相同(00或11),不发生溢出;若和的两个符号位相异(01或10),就说明发生了溢出。遇到溢出,就要停机进行如下处理:选取一个合理的比例因子H=2i,对每个加数都除以H,然后相加,其结果再乘以H,即得所求。下面我们对例4.9和例4.10用变形补码加法来求结果。【例4.13】设X=+10111,Y=+10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有所以,X+Y=+101000【例4.14】设X=-10111,Y=-10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有:所以:X+Y=-101000说

9、明 舍入处理 在变形补码运算中,加数除以H=2i,是通过把 X补右移I位得到的。在移位时,末几位可能超出机器的最末位而丢失,造成误差。为了减少误差,通常要进行舍入 处理,一般有两种方法: 恒置1。即移位后机器末位总是1。上面的例子就 是用的恒置1的方法。 0舍1入。即移出去的数是0则抹去,移出去的数 是1则进1到末位。 符号位扩展 补码在右移时,要注意符号位要一起移,且最左边一位要补上原符号位的值,这就叫做符号位扩展, 即把符号位扩展到为3位。总结以上,得出补码相加的规则: 若两数符号不同,相加的结果即为和的补码。若两数符号相同,相加后若其和的符号不变,则结果是和的补码。若两数符号相同,相加后

10、若其和的符号改变,则表 示发生了溢出。两个正数相加,结果的符号为“01”, 表示发生正溢出;两个负数相加,结果的符号为“10”,表示发生负溢出。说 明4.1.3 减法运算性质3 两数之差的补码等于被减数的补码与负的减数补码之和。X-Y补=X补+-Y补 由性质1推导得:X-Y补=X+(-Y)补=X补+-Y补例4.15 两个正数相减,被减数大于减数的例子。设X=+11001,Y=+10001,求Z=X-Y。解:X补= 00.11001,-Y补=11.01111X-Y补= X补+-Y补= 00.11001+11.01111=00.01000X-Y=+01000所以,Z=+01000例4.16 两个正

11、数相减,被减数小于减数的例子。设X=+10011,Y=+11001,求Z=X-Y。解:X补= 00.10011,-Y补=11.00111X-Y补= X补+-Y补= 00.10011+11.00111=11.11010X-Y =-00110所以,Z =-00110【例4.17】两负数相减,被减数大于减数的例子 。设X=-10011,Y=-11001,求Z=X-Y。解:X补= 11.01101,-Y补=00.11001X-Y补 = X补+-Y补=11.01101+00.11001=00.00110X-Y =+00110所以,Z= +00110【例4.18】两负数相减,被减数小于减数的例子。设X=-

12、11001,Y=-10011,求Z=X-Y。解:X补= 11.00111,-Y补=00.10011X-Y补=X补+-Y补=11.00111+00.10011=11.11010X-Y=-00110所以,Z=-001104.1.4 补码加减运算线路的实现在线路实现上,若已有Y补,求-Y补可用把Y补每一位 (包括符号位和数值 位)取反,再在最低 位加1来实现。实现补码加减运算的逻辑电路如右图 所示。4.1.4 补码加减运算线路的实现图中各个部件的名称和功能是: F 表示多位并行加法器,它的功能是接收参加运算的两个数 X和Y,实现加法运算,并在输出端给出本次运算结果。 加法器的最低一位可以接收一个进位

13、信号1F。X和Y临时存放参加运算数据的两个寄存器,X还用来保 存运算的结果。 A “与”门,功能是控制寄存器X输出的内容是否送到加法器 F的左输入端,用XF信号控制。 C “与”门,功能是控制加法器F的运算结果是否写回寄存器 X,用FX信号控制。 B “与或”门,功能是通过控制信号YF和F分别把Y寄存 器中的内容是原数据送加法器F还是各位取反后送加法器 F。运算原理如下:参加运算的两个数被送到寄存器X和Y,以补码的形式保存。要实现X+Y补X,需给出XF、YF两个控制信号,就可以把X补和Y补送入加法器F的两个输入端,加法器再完成两个补码X补和Y补的相加。加法完成之后,再通过FX命令,把相加结果送

14、入寄存器X。若要完成X-Y补X,“与”门A送出的还是X补,但“与或”门B送出的应是Y每一位的取反值,并在加法器的最低位加进位信号1F,这样就得到-Y补,通过加法器F相加,就实现了X补+-Y补,也就是X-Y补。再通过FX命令,把X-Y补送入寄存器X。4.2 定点乘法及其实现4.2.1 原码一位乘法及其实现4.2.2 定点补码一位乘法及其实现4.2.3 原码两位乘法4.2.4 补码两位乘法(了解) 4.2.1 原码一位乘法及其实现在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的数值部分是两数的绝对值相乘之积。例如,有两个数X和Y,X原=XsX1X2 XnY原=Ys

15、Y1Y2 Yn 则 X*Y原=X原*Y原。乘积的符号位为:XsYs乘积的数值部分为:(X1X2 Xn)*(Y1Y2 Yn)。n例如:X=0.1001,Y=0.1101 求Z=X*Y解: 0.1001X 0.110110010000100110010.01110101 得到相乘结果X*Y= 0.01110101在计算机中其运算规则是:根据乘数Y绝对值每个数位上的值Yi是“1”还是“0”(从最低位Y0开始),决定本次部分积是加上被乘数X的绝对值,还是加上全“0”,得到的新部分积右移一位,再重复上面的动作,直到乘法做完为止。 【例4.20】X=+11010,Y=+10110,求Z=X*Y解:X原=0.11010,Y原=0.10110乘积的符号位Z0=00=0乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“0”。所得结果Z=+0.1000111100。 有时部分积的符号位出现“1”,并不是出现了负数,而是 部分积的值超出了“1”,右移时符号位应补“0”。 要实现原码一位乘法,乘积的符号

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

当前位置:首页 > 生活休闲 > 社会民生

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