- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机中的数(二)定点数的移位运算和加减运算.PDF
计算机中的数(二):定点数的移位运算和加减运算
参考资料:
张代远 《计算机组成原理教程 第二版》清华大学出版社
唐朔飞 《计算机组成原理》高等教育出版社
《2012计算机组成原理 联考复习指导》机械工业出版社
《寻址方式和指令系统》
《逻辑移位与算术移位的区别》
移位运算
有两种移位方式,逻辑移位和算数移位。下面以一个8位二进制数1000 1011为例来探讨。
逻辑移位
把1000 1011视为一串二进制串,不对该串做任何解读,不管是原码还是补码还是别的什么,
只管移位,移丢了就移丢了,多出来的空位一律补0。1000 1011逻辑左移一位成为0001
0110,逻辑右移一位成为0100 0101。
算数移位
算数移位本质上是为了实现有符号数的快速乘除法。算数移位想要达到的效果是:使得算数
左移一位得到的结果是原数乘以2(在最高位没有溢出的情况下),使得算数右移一位得到的结
果是原数除以2(忽略移丢的最低位)。原码、反码、补码的编码规则各不相同,在不同的编码
规则下要达到同样的最终效果,那就必须对1000 1011这一串数字作出解读,根据这串数字的
编码规则而采用不同的移位策略。
为了达到上述 目的,显然应该规定 “无论左移还是右移,符号位是不应该因移位改变的”。
那么剩下的工作就是看看移位之后空出来的位置应该补0还是应该补1。
先看最简单的原码表示法。若1000 1011B是一个原码,则它表示的是-11D,算数左移时,符
号位为1不变,其余位000 1011依次左移,最高位的0移丢了(移丢的是0,所以没有溢出,若
此处移丢的是1,则溢出,结果出错),最低位空出来一位,若最低位补0,则最终结果为1001
0110B,表示-22D,就是将-11乘以2的结果。(此处的道理可参考王道论坛 《2012 计算机组成
原理 联考复习指导》2.2节,再看看唐朔飞 《计算机组成原理》第二版P235表6.5和6.6,相
信一切就很清楚了。)
同样的道理,以此类推,可总结如下:
有符号数为正数时,原码、反码、补码的空位皆补0,因为它们对于正数的编码是相同
的。
有符号数为负数时
原码左移、原码右移得到的空位均补0
反码左移、反码右移得到的空位均补1
补码左移得到的空位补1,补码右移得到的空位补0
要注意区分正负数,比如整数补码的右移空位补0,而负数右移空位补1。.
汇编语言中常用移位指令有
SAL 算术左移指令 (Shift Arithmetic Left)
SAR 算术右移指令 (Shift Arithmetic Right)
SHL 逻辑左移指令 (Shift Logic Left)
SHR 逻辑右移指令 (Shift Logic Right)
这些指令都是针对补码的,因为计算机中的数实际上是用补码表示。例如有
AH FFH (即-1),那么执行指令:SAR AH,1 后,AH仍为FFH。
加减法运算
原码的加减法
这个很好做,先把符号位摘出来,符号位不参加运算,然后按照平常的算数规则,判断数的正负等等
等等
补码的加减法
由于补码的种种好处,计算机中普遍采用补码进行运算。
补码加减法的两大基本公式
文档评论(0)