6

是否可以将两个带符号的 8 位数字相加并设置进位和溢出位?

4

3 回答 3

6

根据您的评论,您的问题似乎是“是否可以为涉及有符号数的二进制补码加法设置进位和溢出?” 这是。典型的实现是将最后一个加法器的进位与链末尾的进位进行异或 - 因此,负数的溢出加法将导致进位位被设置和要设置的溢出位。

这是一个示例,将 -1 添加到 -128:

Carry 10000 0000 
       1000 0000  (-128)
       1111 1111  (-1)
       ---------
       0111 1111 (oops, this is 127!)

进位将被设置,因为最后一次添加导致进位 - 并且溢出将根据上述规则设置(另外,请注意 -128 添加到 -1 显然不是 127)

于 2010-01-31T19:26:34.490 回答
1

您无法访问 C 中的标志,即使您可以让编译器生成设置它们的代码,您也无法使用它们。

于 2010-01-31T19:14:19.787 回答
0

您可以在 C 中编写自己的 add 例程,该例程将返回有符号 8 位操作数的进位和溢出标志。如果您指的是处理器内部的硬件进位和溢出位,不,这不能在 C 中可移植地完成。

于 2010-01-31T19:17:31.543 回答