双符号法检验正数运算的溢出

为了判断“溢出”是否发生,可使用“双符号位法”来判断是否溢出,使用双符号位法需要遵循以下两个规则:

1)两个符号位都看做数码一样参加运算;

2)两数进行以2^n+2为模的加法,即最高符号位上产生的进位要丢掉;

具体使用方法:

1)x=+1100, y=+1000, 求x+y

解答:

x补=001100

y补=001100

x补+y补=010100

结论:两个符号位出现01,表示正溢出

2)x=-1100, y=-1000, 求x+y

解答:

x补=110100

y补=111000

x补+y补=101100(最高符号位进位已扔掉)

结论:两符号位出现10,表示负溢出

上一篇:[LintCode] Product of Array Except Self 除本身之外的数组之积


下一篇:PAT 1100 Mars Numbers