- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在用原码进行加减运算时,计算机实际操作是加还是减 取决于指令中的操作码和两个操作数的符号;运算结果的符号判断也较复杂。因此这种方法很少使用。 1. 补码加法运算 公式:[x+y]补=[x]补+[y]补 以模为2定义的补码为例,分四种情况证明该式的正确性(纯小数) ①??? 设x0, y0, 则x+y0 由补码定义,[x]补=x, [y]补=y, 所以[x]补+[y]补=x+y=[x+y]补 ② x0, y0, 则(x+y)0 由补码定义,[x]补=2+x, [y]补=2+y [x]补+[y]补=2+x+2+y=2+(2+x+y), 由于x+y为负数,其绝对值又小于1,所以(2+x+y)就一定是小于2大于1的数,上式等号右边的2必然丢掉,又由于x+y 0,所以 [x]补+[y]补=(2+x+y)=2+(x+y)= [x+y]补 ③ x0, y0 [x]补=x, [y]补=2+y, [x]补+[y]补=x+2+y 有两种情况 A: 当(x+y)≥0时,模2丢掉, 又因为(x+y)≥0,所以[x]补+[y]补=2+x+y= x+y=[x+y]补 B: 当(x+y)0时, 有:[x]补+[y]补=2+x+y =[x+y]补 ④x0, y0 情况与③类似。 2. 补码的减法运算 公式[x–y]补=[x+(–y)]补=[x]补+[–y]补 只要证明 [–y]补= –[y]补,上式即得证。证明如下: 由于 [x+y]补= [x]补+[y]补 ,可得 ① [y]补= [x+y]补–[x]补, 又 [x–y]补= [x+(–y)]补= [x]补+[–y]补,同理可得 ② [–y]补= [x – y]补–[x]补 ① +②得 [–y]补+ [y]补= [x–y]补–[x]补+[x+y]补–[x]补=[x–y]补+[x+y]补–[x]补–[x]补 = [x–y+x+y]补–[x]补–[x]补 =[2x]补–2[x]补=0 从而有 [–y]补= –[y]补 [mod 2] 只要求得[–y]补,就可以变减法为加法,已知[y]补, 求[–y]补的法则是: 对[y]补各位(包括符号位)取反,然后在末位加上1,就可以得到[–y]补。 例2.13设x= –0.1101, y= –0.1011, 求[x×y]原= ? 上一例在演算时也可以先计算两小数的小数部分,算完小数部分积后再考虑积的的小数部分位数,添上小数点。 定点除法运算 遇到的问题 例 x =+0.1001 y = -0.1011 求[x/y]原 【例3-11】 用不恢复余数法计0011。 解:A、C B:0011; [-B]补:1101。 其运算过程如右图。 * 3.2.2 定点数运算方法 数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有定点数的运算和浮点数的运算。 1.定点加减运算 (1)原码加减运算 例如,加法指令指示做(+A)+(-B),由于一个操作数为负,实际操作是做减法(+A)-(+B),结果符号与绝对值大的符号相同。同理,在减法指令中指示做(+A)-(-B),实际操作是做加法(+A)+(+B),结果与被减数符号相同。 (2)补码加减运算 ① 补码加法运算 [X ] +[Y ] =[X +Y ] ② 补码减法运算 [X–Y ] =[X +(-Y )] =[X ] +[-Y ] ③ 补码运算规则 根据以上讨论,可将补码加减规则归纳如下: ? 参加运算的操作数用补码表示。 ? 符号位参加运算。 ? 若指令操作码为加,则两数直接相加;若操作码为减,则将减数连同 符号位一起变反加1后再与被减数相加。 ? 运算结果用补码表示。 【例3-3】 [X ] =[Y ] 求[X+Y ] ,[X-Y ] 。 (3)溢出判别 在什么情况下可能产生溢出? 例:设定点整数字长8位,补码表示(最高位为符号位),表示范围为-128?127,运算结果超出此范围就发生溢出。 0 0011111 0 0001101 (1)31 +13=44 0 0101100 0 1111111 0 1000001 (3) 63+66=129 1 0000001 1 1000001 1 0111110 (4) -63+(-66)=-129 0 1111111 正溢 负溢 (2)-31 +(-12)=-43 1 1100001 1 1110100 1 1010101 ① 采用一个符号位判断
文档评论(0)