二进制补码加减运算的溢出检查

二进制补码加减运算的溢出检查二进制中加减运算的溢出检查

大家好,欢迎来到IT知识分享网。

前言

此文章不涉及相应的二进制补码的加减运算,仅对其溢出的问题进行讨论。
例题中有包含相应的解释,如果通过这三个方法检测都没有问题时,结果不溢出。
有任何的错误可在评论区指出。

注:在补码中以0开头为正数,以1开头为负数

法一(较少使用)

对于两个符号相同的补码数相加,如果和的符号与加数的符号相反时,结果溢出。
两个符号相反的补码数相减,差的符号与减数的符号相同时,结果溢出

如果两个同为正,相加后为负时,结果溢出
如果两个同为负,相加后为正时,结果溢出

法二

两个补码数相减,若最高数值位向符号位送的进位值,与符号位送向更高位的进位值不同时,结果溢出。

符号位的进位和最高数值位的进位不同时,结果溢出

注:符号位为二进制最左边的一位(双符号位的情况下为两位),最高数值位为二进制最左边的第二位(双符号位的情况下为第三位)。

法三(常用)

在采用双符号位运算时,若两个符号位的值不同,则结果溢出。

即运算结果出现了以01开头时正溢出,出现了以10开头时负溢出。两个情况都为溢出。

例题

【例1】两个单符号位的补码分别为01011和01000

法一:
在补码中开头为0表示为正数,开头为1表示负数。
相当于两个正数相加后变成了负数,与正+正=正的事实不符,所以结果溢出

在这里插入图片描述
【例2】两个单符号位的补码分别为10101和11000

法二:
两个符号位都为1,可以进位。而最高数值位分别为0和1,不能进位。
一个可以进位,一个不能进位,所以结果溢出。

在这里插入图片描述
【例3】两个单符号位的补码分别为10100和11001

法二:
两个符号位都为1,可以进位。而最高数值位分别为0和1,不能进位。
一个可以进位,一个不能进位,所以结果溢出。

在这里插入图片描述
【例4】两个单符号位的补码分别为10111和10101

法二:
两个符号位都为1,可以进位。而最高数值位都为0,不能进位。
一个可以进位,一个不能进位,所以结果溢出。

在这里插入图片描述
【例5】两个双符号位的补码分别为001011和001000

法三:
因为双符号位结果中出现了以01或10开头,所以结果溢出

在这里插入图片描述
【例6】两个双符号位的补码分别为110111和110101

法二:
两个符号位都为11,可以进位。而最高数值位都为0,不能进位。
一个可以进位,一个不能进位,所以结果溢出。

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10487.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信