是否可以将两个带符号的 8 位数字相加并设置进位和溢出位?
问问题
2788 次
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 回答