




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 关于二进制补码运算如何解决溢出问题的研究 柏刚+程兰摘要:计算机中用补码来表示和存储数值,而在进行数值的算术运算时由于机器字长的限制往往会出现补码溢出,导致计算结果错误。针对这个问题,提出了一种根据溢出结果得到正确结果的计算方法:两个正数相加溢出时,将错误解加上2n+1即为正确解;两个负数相加溢出时,将错误解减去2n+1即为正确解,并给出了一般性证明。关键词:二进制;有符号数;补码;溢出;求补运算:tp301 :a :1009-3044(2016)33-0208-02abstract:complement is used to repres
2、ent and store the value in computers.but the problem of complement overflow often happens in numerical arithmetic because of the limit of word length, which leads to calculation errors. to solve this problem, a new method is proposed to get the correct result according to the overflow result,in whic
3、h the error solution can turn out to be correct by plus 2n+1 when it's two positive numbers' additive overflow or minus 2n+1 when it's two negative number's additive overflow, and gives a general proof.key words: binary; signed number ; complement; overflow; complementary operation1
4、补码概述二进制补码是计算机中采用的数制,用来表示有符号二进制数。在二进制补码这一数制中,一切数(被加数、加数及和;被减数、减数及差;被乘数、乘数及积;被除数、除数、商及余数;求补运算前的数及求补运算后的结果等) 都是用二进制补码来表示的1。补码问题既是数字电子技术课程和微机原理课程的教学难点之一,也是软件开发中常常遇到的问题之一2。对于有符号数,用0表示正数的符号位,1表示负数的符号位。对于n+1(变量用斜体)位字长的有符号二进制数,其补码是这样定义的:若该数的原码为非负数,则其补码与其原码表示相同;若该数的原码为负,则其补码的数据位为其原码表示的数据位逐位求反后加1,而符号位为12。其公式如
5、下:(n表示数值位的位数)2 补码溢出问题两个用补码表示的有符号数进行加、减运算时,其特点是把符号位上表示正、负的“0”和“1”也看成数,与数值部分一起进行运算,所得的结果也为补码形式。结果的符号位为“0”,表示正数;结果的符号位为“1”,表示负数3。两个有符号数x和y相加时,先将两数转换成补码形式,然后进行补码运算,所得结果为和的补码,即:x+y补=x补+y补。两个有符号数x和y相减时,可看成x+(-y)分别将x和-y表示成补码形式再进行运算,所得结果为差的结果,即:x-y补=x补+-y补。由于补码的表示范围为:-2n 2n-1。当两个有符号数进行补码运算时,若结果的绝对值超出运算装置容量,
6、数值部分就会发生溢出,占据符号位的位置,导致错误的结果3。因为计算机中的减法也看作加法,因此我们只讨论加法。下面分3种情况来讨论两个有符号数x和y相加(转换成补码后,用n位数值位1位符号位表示)。1). x和y均为正数,当x+y大于2n-1时,结果溢出。2). x和y均为负数,当x+y小于-2n时,结果溢出。3). x和y两数中只有一个数为正,另一个数为负。符号不同的两个数相加是不会产生溢出的4。3 如何从补码溢出结果得到正确结果下面将讨论两种溢出的情况,并提出解决溢出问题的方法。1) x和y均为正数,当x+y大于2n-1时,结果将溢出。例2:使用7位数值位,1位符号位的二进制数来表示,其补码
7、表示范围为:-128d 127d计算70+85,由于70+85=155,155大于127,结果将溢出。即:70+85=-1100101= -101,显然发生溢出,结果错误。为了给出解决方法,先给出两个结论:结论一:两正数相加最高位(符号位)一定不会进位。证明:两正数的符号位都是零,如果符号位溢出,次高位必须要进2,在最理想的情况(两个数的次高位都是1),次高位要进2必须要求次次高位进2,以此类推,必须要求最低位进2,才能使得较高位进2,而最低位最多只能进1。由此例可知,即使数值位都为1,符号位也不会产生进位。结论二:两正数相加溢出一定是由于次高位(数值部分最高位)向符号位有进位。证明:根据双高
8、位判别法(计算机中常用的溢出判别称为双高位判别法,即:最高位(符号位)有进位而次高位无进位或最高位(符号位)无进位而次高位有进位 3。)及结论一,可知溢出一定是因为次高位有进位,而且只能进1,所以符号位一定是1。下面推导出解决正数相加溢出的公式。设x和y都为正数,转换成二进制补码后用n位数值位1位符号位表示,且x+y大于2n-1,即溢出。为了避免可能产生的溢出错误,有必要扩展二进制补码的码位数,即在进行求补运算之前,使二进制补码扩展符号位:将二进制补码的原符号位向左 (高位) 重复写一位,形成新的符号位。扩展符号位以后的二进制补码,真值不变。扩展符号位能够保证 n位二进制补码的每一个数求补运算
9、的正确性1。结果将不会溢出。即:(1)用n+1位数值位1位符号位表示x补+y补时不会溢出,得到的结果为正确结果,令正确结果为co。(2)用n位数值位1位符号位表示x补+y補时会溢出,得到的结果为错误结果,令错误结果为er。在结论一和结论二的条件下,er是将co的最高位当成了符号位,把er当成负数,再求补码从而得到原码。即:例4中-76+(-90)转换成补码运算后等于+1011010即+90。将90代入(5)式:90-28=-166,结果正确。结论四:负数的补码运算溢出时,将溢出结果减去2n+1可以得到正确结果。4 结论本文讨论了有符号数的补码溢出问题,并给出了根据溢出结果得到正确结果的方法。两个正数相加溢出时,将错误解加上2n+1即为正确解;两个负数相加溢出时,将错误解减去2n+1即为正确解。本文方法可以在不增加字长的情况下解决溢出问题。参考文献:1 查振亚. 关于二进制补码数制中求补运算的研究j. 华中理工大学学报, 1997(3):106-110.2 孙开放. 对二进制补码数的进一步
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全检查培训试卷及答案
- 2025金融借款合同范本版
- 2025房地产买卖合同书范本
- 2025各类工程合同模板
- 2025【合同范本】农药购销合同范本
- 城市轨道交通TOD开发模式创新与城市交通基础设施优化报告
- 工程物料利旧方案(3篇)
- 2025年史上数学最难试卷及答案
- 工程尾款讲价方案范文(3篇)
- 2025房产租赁合同版
- 2025年《数字孪生与虚拟调试技术应用》课程标准
- 医院价格公示管理制度
- 建设工程设计合同(业主、管理人、设计人三方)
- 计算机一级Msoffice知识点总结试题及答案
- 新生儿竞赛试题及答案
- TCCEAS001-2022建设项目工程总承包计价规范
- 输变电工程施工质量验收统一表式附件4:电缆工程填写示例
- 幼儿园大班数学测加减法口算练习题
- 餐饮内部稽核管理制度
- 中西艺术时空对话 课件 2024-2025学年岭南美版(2024) 初中美术七年级下册
- 护理学科建设
评论
0/150
提交评论