- 1、本文档共294页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 3 章 运算方法与运算器;本章学习内容;3.1 运算器的设计方法 ;运算器逻辑组织结构设计的层次;3.2 定点补码加减运算;原码加减运算步骤;⑷ 运算结果的处理:
① 加法运算:
无进位,即得到正确结果。 有进位,结果溢出。
② 减法运算:
有进位,结果为正,即得到正确结果。 无进位,结果为负,需将结果再变一次补, 得到正确结果。
⑸ 取绝对值大的操作数的符号作为结果的符号,给结果加上符号位。;3.2.1 补码运算的基础;1. 补码加法;以定点小数为例证明式(3-1)的正确性。
证明:
设x,y的取值范围分别为-1≤x<1,-1≤y<1;两数之和x+y的值在正常范围之内,即:-1≤x+y<1。
(1) 设x≥0,y≥0,则x+y≥0
由补码定义:
[x]补=x,[y]补=y,
得:[x]补+[y]补=x+y=[x+y]补;(2) 设x≥0,y<0 且 |x|≥|y|
由补码定义
[x]补=x,[y]补=2+y (mod2)
得:[x]补+[y]补=2+x+y
∵|x|≥|y|,
∴x+y≥0,[x+y]补=x+y
∵2+x+y≥2
∴[x]补+[y]补=x+y (mod2)
即证得 [x]补+[y]补=[x+y]补;(3) 设x≥0,y<0 且|x|<|y|
由补码定义
[x]补=x,[y]补=2+y (mod2)
得:[x]补+[y]补=2+x+y
∵|x|<|y|
∴ x+y <0
[x+y]补=2+x+y=[x]补+[y]补 (mod2);(4)设x<0,y<0
由补码定义:
[x]补=2+x,[y]补=2+y (mod2)
得:[x]补+[y]补=2+x+2+y =2+2+x+y
舍去模2,得 [x]补+[y]补=2+x+y
∵x<0,y<0 , x+y <0
∴[x+y]补=2+x+y=[x]补+[y]补
当x<0,y≥0时,证明方法与(2)、(3)相同。
到此得证:[x]补+[y]补=[x+y]补;补码减法的基本关系:
[x]补-[y]补=[x]补+[-y]补=[x-y]补 (3-2)
即两数补码之差等于两数之差的补码。
式(3-2)中,
如果x,y是定点小数,则Mod=2;
如果x,y是定点整数,则Mod=2n+1,n为定点整数数值部分的位数。 ;以定点小数为例证明式(3-2)的正确性。
根据式(3-1),可知:
[x]补+[-y]补=[x+(-y)]补=[x-y]补
∵[x+y]补=[x]补+[y]补
∴[x]补+[-y]补=[x-y]补,
[x]补-[y]补=[x]补+[-y]补=[x-y]补;证明: ∵[x+y]补=[x]补+[y]补
∴[y]补=[x+y]补-[x]补
∵[x-y]补=[x]补+[-y]补
∴[-y]补=[x-y]补-[x]补
∵[y]补+[-y]补
=[x+y]补+[x-y]补-[x]补-[x]补
=[x+y+x-y]补-[x]补-[x]补
=[x+x]补-[x]补-[x]补
=[x]补+[x]补-[x]补-[x]补=0
∴ -[y]补=[-y]补;① 参加运算的各个操作数均以补码表示,运算结果仍以补码表示。
② 符号位与数值位一样参加运算。
③ 若求和,则将两补码数直接相加,得到两数之和的补码; 若求差,则将减数变补(由[y]补求[-y]补),然后与被减数相加,得到两数之差的补码。
④ 补码总是对确定的模而言,若运算结果超过模(有从符号位上产生的进位),则将模自动丢掉。;例3.1 x=+0.1001,y=+0.0101,求x±y=?
解:[x]补=0.1001, [y]补=0.0101, [-y]补=1.1011
[x+y]补=[x]补+[y]补=0.1001+0.0101=0.1110
x+y=0.1110
;例3.2 x=-0.0110,y=-0.0011,求x±y=?
解:[x]补=1.1010, [y]补=1.1101, [-y]补=0.0011
[x+y]补=[x]补+[y]补=1.1010+1.1101=1.0111
x+y=-0.1001
;例3.3 x=+0.1010,y=+0.1001,求x+y=?
解:[x]补=0.1010, [y]补=0.1001,
[x+y]补=[x]补+[y]补=0.1010+0.1001
;例3.4 x=-0.1101,y=-0.1011,求x+y=?
解:[x]补=1.0011, [y]补=1.0101,
[x+y]补=[x]补+[y]补=1.0011+1.0101;如果两个正数相加,得到结果的符号为负;两个负数相加,得到的结果为正,则运算结果是错误的。
造成错误的原因,是因为运算结果超出了
文档评论(0)