机器数的加减运算

上传人:j****9 文档编号:57266436 上传时间:2018-10-20 格式:PPT 页数:283 大小:2.64MB
返回 下载 相关 举报
机器数的加减运算_第1页
第1页 / 共283页
机器数的加减运算_第2页
第2页 / 共283页
机器数的加减运算_第3页
第3页 / 共283页
机器数的加减运算_第4页
第4页 / 共283页
机器数的加减运算_第5页
第5页 / 共283页
点击查看更多>>
资源描述

《机器数的加减运算》由会员分享,可在线阅读,更多相关《机器数的加减运算(283页珍藏版)》请在金锄头文库上搜索。

1、第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】设

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

3、原码加法,4.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

4、.6 设X=+10101,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.110

5、1,Y=0.0111,(-1X+Y0),求这两数之和。解: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.10

6、001=1.01000Z=X+Y=-0.11000两个大于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

7、 解:X补= 0.10111,Y补=1.01111X+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.变形补码加法,变形补码是符号位用两位来表示的补码。 变形补码的定义为 :对于变形补码,补

8、码的加法性质公式同样适用,即: X+Y变形补= X变形补+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,用变形补码的加法

9、求Z=X+Y 解:设比例因子H=2,则有:所以:X+Y=-101000,说 明, 舍入处理 在变形补码运算中,加数除以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.0111

11、1=00.01000X-Y=+01000 所以,Z=+01000,例4.16 两个正数相减,被减数小于减数的例子。设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 =+00

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

13、数X和Y,实现加法运算,并在输出端给出本次运算结果。加法器的最低一位可以接收一个进位信号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的两个输入端,加法

14、器再完成两个补码X补和Y补的相加。加法完成之后,再通过FX命令,把相加结果送入寄存器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 原码一位乘法及其实现,在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的

15、数值部分是两数的绝对值相乘之积。例如,有两个数X和Y,X原=XsX1X2 XnY原=YsY1Y2 Yn 则 X*Y原=X原*Y原。乘积的符号位为:XsYs乘积的数值部分为:(X1X2 Xn)*(Y1Y2 Yn)。,例如: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号