APP下载

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

2017-03-21柏刚程兰

电脑知识与技术 2016年33期

柏刚+程兰

摘要:计算机中用补码来表示和存储数值,而在进行数值的算术运算时由于机器字长的限制往往会出现补码溢出,导致计算结果错误。针对这个问题,提出了一种根据溢出结果得到正确结果的计算方法:两个正数相加溢出时,将错误解加上2n+1即为正确解;两个负数相加溢出时,将错误解减去2n+1即为正确解,并给出了一般性证明。

关键词:二进制;有符号数;补码;溢出;求补运算

中图分类号:TP301 文献标识码:A 文章编号:1009-3044(2016)33-0208-02

Abstract:Complement is used to represent 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 which 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 operation

1 补码概述

二进制补码是计算机中采用的数制,用来表示有符号二进制数。在二进制补码这一数制中,一切数(被加数、加数及和;被减数、减数及差;被乘数、乘数及积;被除数、除数、商及余数;求补运算前的数及求补运算后的结果等) 都是用二进制补码来表示的[1]。补码问题既是数字电子技术课程和微机原理课程的教学难点之一,也是软件开发中常常遇到的问题之一[2]。

对于有符号数,用0表示正数的符号位,1表示负数的符号位。对于n+1(变量用斜体)位字长的有符号二进制数,其补码是这样定义的:若该数的原码为非负数,则其补码与其原码表示相同;若该数的原码为负,则其补码的数据位为其原码表示的数据位逐位求反后加1,而符号位为1[2]。其公式如下:(n表示数值位的位数)

2 补码溢出问题

两个用补码表示的有符号数进行加、减运算时,其特点是把符号位上表示正、负的“0”和“1”也看成数,与数值部分一起进行运算,所得的结果也为补码形式。……

登录APP查看全文