CPU 是如何检测溢出的
在加法和减法运算完成后,运算结果的最高有效位向高位的进位值(也就是CF)与到最
高位有效位的进位制异或,其结果放到溢出标志中。例如8位二进制数1000 0000 和1111
1110 相加,第六位向最高有效位(第七位无进位),但第七位向高位有进位(CF=1)
这里都是补码:
1000 0000
1111 1111
---------------
0111 1111 CF=1
-128+ -1= 127
所以溢出咯
1000 0001
1111 1111
-------------
1000 0000 CF=1 没溢出
-127 + -1 =-128
在加法和减法运算完成后,运算结果的最高有效位向高位的进位值(也就是CF)与到最
高位有效位的进位制异或,其结果放到溢出标志中。例如8位二进制数1000 0000 和1111
1110 相加,第六位向最高有效位(第七位无进位),但第七位向高位有进位(CF=1)
这里都是补码:
1000 0000
1111 1111
---------------
0111 1111 CF=1
-128+ -1= 127
所以溢出咯
1000 0001
1111 1111
-------------
1000 0000 CF=1 没溢出
-127 + -1 =-128