- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补码运算规则与溢出判别
补码的运算规则与溢出判别
1. 补码的运算规则
补码的运算规则如下:
1)[X+Y]补=[X]补+[Y]补
该运算规则说明:任何两个数相加,无论其正负号如何,只要对它们各自的补码进行加法运算,就可得到正确的结果,该结果是补码形式。
2)[X-Y]补=[X]补+[-Y]补
该运算规则说明:任意两个数相减,只要对减数连同“-”号求补,就变成[被减数]补与[-减数]补相加,该结果是补码形式。;3)[[X]补]补=[X]原
对于运算产生的补码结果,若要转换为原码表示,则正数的结果[X]补=[X]原;负数结果,只要对该补结果再进行一次求补运算,就可得到负数的原码结果。
例2: 用补码求X+Y。
解: 若[X]补
[Y]补可得
[X+Y]补=[X]补+[Y]补
00110011由于符号位为0是正数,所以
[X+Y]原=[X+Y]补 则 X+Y???2=+88;例3: 用补码求X-Y。
解: 若[-Y]补可得
[X-Y]补=[X]补+[-Y]补
11001101由于符号位为1是负数,所以
[X-Y]原=[[X-Y]补]补则 X-Y=-2=-14
例4: 用补码求Y-X。
解: 若[-X]补可得
[Y-X]补=[Y]补+[-X]补
11011011=100001110 (模28自然丢失)
则 Y-X=2=+14;例5: 用补码求(-X)+(-Y)。
解: [(-X)+(-Y)]补=[-X]补+[-Y]补
11001101=110101000 (模28自然丢失)
[(-X)+(-Y)]原=[(-X)+(-Y)补]补 则(-X)+(-Y)=-2=-88
上述运算结果是正确的,但有时在补码运算中可能会出现错误的结果,请看下面例子。
例6: 设X=+100,Y=+50,用补码运算求X+Y,(-X)+(-Y)。
解: [X]补Y]补 [-X]补-Y]补[X+Y]补=[X]补+[Y]补00110010? [X+Y]原=[[X+Y]补]补 X+Y=-2=-106
而[-X]补+[-Y]补11001110[[-X]补+[-Y]补]原=2(-X)+(-Y)=+=+106;2. 溢出的判别
计算机中判别溢出的方法通常采用双高位判别法。双高位判别法利用符号位(K n-1位)及最高数值位(K n-2位)的进位情况来判断是否发生了溢出。为此,需引进两个符号:CS和CP。
CS:若符号位发生进位,则CS=1;否则CS=0。
CP:若最高数值位发生进位,则CP=1;否则CP=0
当两个正数补码相加时,若数值部分之和大于2n-1,则数值部分必有进位CP=1;而符号位却无进位CS=0。这时CSCP的状态为“01”,发生正溢出。
当两个负数补码相加时,若数值部分绝对值之和大于2n-1,则数值部分补码之和必小于2n-1,CP=0;而符号位肯定有进位CS=1,这时CSCP的状态为“10”,发生负溢出。
当不发生溢出时,CS和CP的状态是相同的,即CSCP的状态为“00”或“11”。;例 7:
(+89) (-110)
(+108) (-92)
+)011110000 (进位) +)1(进位)
011000101 (-59) 1(+54)
CS=0,CP=1,正溢出 CS=1,CP=0,负溢出;例9:(+85) (-68)
(-35) (+29)
+)1 101
文档评论(0)