前言
注:在补码中以0开头为正数,以1开头为负数
法一(较少使用)
如果两个同为正,相加后为负时,结果溢出
如果两个同为负,相加后为正时,结果溢出
法二
两个补码数相减,若最高数值位向符号位送的进位值,与符号位送向更高位的进位值不同时,结果溢出。
符号位的进位和最高数值位的进位不同时,结果溢出
注:符号位为二进制最左边的一位(双符号位的情况下为两位),最高数值位为二进制最左边的第二位(双符号位的情况下为第三位)。
法三(常用)
在采用双符号位运算时,若两个符号位的值不同,则结果溢出。
即运算结果出现了以01开头时正溢出,出现了以10开头时负溢出。两个情况都为溢出。
例题
【例1】两个单符号位的补码分别为01011和01000

【例2】两个单符号位的补码分别为10101和11000

【例3】两个单符号位的补码分别为10100和11001

【例4】两个单符号位的补码分别为10111和10101

【例5】两个双符号位的补码分别为001011和001000

【例6】两个双符号位的补码分别为110111和110101

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176825.html原文链接:https://javaforall.net
