计算机中二进制加减法时,是如何判断溢出的?
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
当加法或减法的结果发生进位,必须考量到当运算的数值与结果都是unsigned numbers(无号数值,即“正数”)类型时,运算的结果就不适合使用这个数值类型。所以,在运行无号数值(正数)的加法或减法之后检查进位旗标是非常有用的作法。
“溢出”在运算结果为无号数值时容易发生,可以从有符号的运算数值预计出这类的情形(例如:两个正整数相加产生的结果为一个负数)。所以,在运行2的补数的加法或减法之后检查溢出旗标是非常有用的作法(换言之,有考虑到有号数值)。
定义A和B都是长度为n位的二进制数
以下是竖式(第一行为进位):
其中
是
的进位
1、输入的数是无符号整数,我们通过观察C判断是否溢出
a) C=1
i)如果是加法操作,结果不正确,结果溢出
ii)如果是减法操作,结果正确,结果未溢出
b) C=0
i)如果是加法操作,结果正确,结果未溢出
ii)如果是减法操作,结果不正确,结果未溢出。在这种情况下,结果是负数。然而,在无符号整数世界里,负数不存在,我们认识这样的操作是非法的。当然,如果认为答案是以有符号整数补码的形式出现,则结果正确。
2、输入的数是有符号整数,我们通过观察V判断是否溢出
a) V=1,结果不正确,结果溢出
b) V=0,结果正确,结果未溢出
扩展资料:
计算机的二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。由德国数理哲学大师莱布尼茨于1679年发明。
当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
参考资料来源: 百度百科-算术溢出