我在理解进位标志(CF)和溢出标志(OF)时遇到了一些麻烦。
以下是我正在处理的一些示例问题:
1. 1011 1111 2. 1111 0111 3. 0111 1110 --> 0111 1110
+ 1011 0111 + 1101 1101 - 1011 0000 --> + 0100 1111
___________ ___________ ___________ + 1
0111 0110 1101 0100 ___________
1100 1110
我想我无法理解无符号溢出和适当的CF值。
答案 0 :(得分:2)
免责声明:我不是专家(甚至不是这一级代码的用户:))。
我认为进位标志对无符号数据有意义,溢出标志对有符号数据有意义。
两者都将始终生成,但由您来决定是否考虑无符号值或两个补码,因此您需要注意哪个标记。
来自:http://en.wikipedia.org/wiki/Overflow_flag
在内部,溢出标志通常由独占或内部进出符号位产生。由于符号位与被认为是无符号的数字的最高有效位相同,溢出标志是“无意义的”,并且在添加或减去这些数字时通常会被忽略。
符号位是最重要的位(最左边的位)。
独家或(XOR)是:
进入符号位是指第二个最高有效位在添加时产生一个值,转移到下一列。
执行是指在一起添加最高有效位(符号位,如果数字是二进制补码)时是否必须进位。
对这两个值进行异或,并且在给定添加后应该以溢出标志的值结束。