关于二进制补码运算如何解决溢出问题探究

关于二进制补码运算如何解决溢出问题探摘要:计算机中用补码来表示和存储数值,而在进行数值的算术运算时由于机器字长的限制往往会出现补码溢出,导致计算结果错误。针对这个问题,提出了一种根据溢出结果得到正确结果的计算方法:两个正数相加溢出时,将错误解加上2n+1即为正确解;两个负数相加溢岀时,将错误解减去2n+1即为正确解,并给出了一般性证明关键词:二进制;有符号数;补码;溢岀;求补运算中图分类号:TP301文献标识码:A文章编号:1009-3044(2016)33-0208-02Abstract:Complementisusedtorepresentandstorethevalueincomputers.Buttheproblemofcomplementoverflowoftenhappensinnumericalarithmeticbecauseofthelimitofwordlength,whichleadstocalculationerrors.Tosolvethisproblem,anewmethodisproposedtogetthecorrectresultaccordingtotheoverflowresult,inwhichtheerrorsolutioncanturnouttobecorrectbyplus2n+1whenit'stwopositivenumbers5additiveoverfloworminus2n+1whenit'stwonegativenumber'sadditiveoverflow,andgivesageneralproof.Keywords:Binary;Signednumber;Complement;Overflow;Complementaryoperation1补码概述二进制补码是计算机中采用的数制,用来表示有符号二进制数。在二进制补码这一数制中,一切数(被加数、加数及和;被减数、减数及差;被乘数、乘数及积;被除数、除数、商及余数;求补运算前的数及求补运算后的结果等)都是用二进制补码来表示的口]。补码问题既是数字电子技术课程和微机原理课程的教学难点之一,也是软件开发中常常遇到的问题之一[2]对于有符号数,用0表示正数的符号位,1表示负数的符号位。对于n+1(变量用斜体)位字长的有符号二进制数,其补码是这样定义的:若该数的原码为非负数,则其补码与其原码表示相同;若该数的原码为负,则其补码的数据位为其原码表示的数据位逐位求反后加1,而符号位为1[2]o其公式如下:(n表示数值位的位数)2补码溢出问题两个用补码表示的有符号数进行加、减运算时,其特点是把符号位上表示正、负的“0”和7”也看成数,与数值部分一起进行运算,所得的结果也为补码形式。结果的符号位为,表示正数;结果的符号位为“1”,表示负数[3]两个有符号数X和丫相加时,先将两数转换成补码形式,然后进行补码运算,所得结果为和的补码,即:[X+YR2[X]补+[Y]补。两个有符号数X和丫相减时,可看成X+(-Y)分别将X和-Y表示成补码形式再进行运算,所得结果为差的结果,即:[X-丫]补二[X]补+卜丫]补由于补码的表示范围为:-2n〜2n-1o当两个有符号数进行补码运算时,若结果的绝对值超出运算装置容量,数值部分就会发生溢出,占据符号位的位置,导致错误的结果[3]因为计算机中的减法也看作加法,因此我们只讨论加法。下面分3种情况来讨论两个有符号数X和丫相加(转换成补码后,用n位数值位1位符号位表示)1).X和丫均为正数,当X+Y大于2n-1时,结果溢出2).X和Y均为负数,当X+Y小于时,结果溢出3).X和丫两数中只有一个数为正,另一个数为负。符号不同的两个数相加是不会产生溢出的[4]3如何从补码溢出结果得到正确结果下面将讨论两种溢岀的情况,并提出解决溢岀问题的方法1)X和丫均为正数,当X+Y大于2n-1时,结果将溢例2:使用7位数值位,1位符号位的二进制数来表示,其补码表示范围为:-128D〜127D计算70+85,由于70+85=155,155大于127,结果将III即:70+85=-1100101=-101,显然发生溢出,结果错误为了给出解决方法,先给出两个结论:结论一:两正数相加最高位(符号位)一定不会进位证明:两正数的符号位都是零,如果符号位溢出,次高位必须要进2,在最理想的情况(两个数的次高位都是1),次高位要进2必须要求次次高位进2,以此类推,必须要求最低位进2,才能使得较高位进2,而最低位最多只能进1由此例可知,即使数值位都为1,符号位也不会产生进位结论二:两正数相加溢出一定是由于次高位(数值部分最高位)向符号位有进位证明:根据双高位判别法(计算机中常用的溢出判别称为双高位判别法,即:最高位(符号位)有进位而次高位无进位或最高位(符号位)无进位而次高位有进位[3]o)及结论一,可知溢出一定...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?