两个有符号的8位数相加并将进位和溢出标志都设置为1,这是否可能?
Carry 10000 0000
1000 0000 (-128)
1111 1111 (-1)
---------
0111 1111 (oops, this is 127!)
由于最后一次加法产生了进位,进位标志Carry将被设置,根据上述规则将设置溢出标志Overflow(还要注意-128加-1显然不是127)。
在 C 语言中,您无法访问标志,即使您可以让编译器生成设置它们的代码,也没有办法使用它们。
int
类型更小的类型上“逻辑”执行,因此您依赖于特定的代码转换/优化。无论如何,我已经从标题和标签中删除了对C的引用,因为实际问题与C无关。 - Steve Jessop你可以用C语言编写自己的添加程序,以返回有符号8位操作数的进位和溢出标志。如果你指的是处理器内部的硬件进位和溢出位,那么不,这不能在C中进行可移植性的实现。