进位CF 溢出OF
进位标识CF(Carry Flag)针对无符号数加法。
溢出标识OF(OverFlow Flag)针对有符号数加法。
假设数值用3位二进制表示。
进位比较好理解,两个数相加,如果第四位有为1,就代表有进位。
溢出是针对有符号数,用补码表示,首位表示符号,后面数值用补码表示。
有符号数用补码表示,补码可以这样理解:
顺时针代表正数,逆时针代表负数,-1和7是同一个位置,1和7就互为补数,1+7=8.
用表示一个负数,它的补数是,注意是负数。
溢出形象的表示就是正转超过一圈,或逆时针转超过一圈。
一正一负两个数相加,是不会溢出的。两个正数相加,或两个负数相加,才有可能溢出。
两个正数相加是否溢出就看符号位,如果符号位为1,就代表溢出。
两个负数相加是否溢出也是看符号位,如果符号位为0,就代表溢出。
代表两个负数的和,如果没有溢出,,x的补码是(因为是两个负数相加,所以加两个8),这个值就是计算机表示的数值,也就是一定会有一个进位到符号位,两个负数的符号位都是1,所以符号位最后是1。这样是没有溢出的。