开发者

Overflow and Carry flags

开发者 https://www.devze.com 2022-12-18 21:15 出处:网络
Is it poss开发者_开发问答ible to add two signed 8-bit numbers together and set both the carry and overflow bits?Per your comments, your question seems to be \"is it possible to have both carry and ove

Is it poss开发者_开发问答ible to add two signed 8-bit numbers together and set both the carry and overflow bits?


Per your comments, your question seems to be "is it possible to have both carry and overflow set for a two's complement add involving signed number?" It is. The typical implementation is to take the exclusive-OR of the carry-in for the last adder with the carry-out at the end of the chain -- hence, an overflowing addition of negative numbers will cause the carry-out bit to be set and the overflow bit to be set.

Here's an example, add -1 to -128:

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

Carry will be set, since the last add resulted in a carry -- and overflow will be set based on the rule above (also, note that -128 added to -1 is obviously not 127)


You don't have access to the flags in C, even if you could get the compiler to generate code that set them, you have have no way to use them.


You can write your own add routine in C that will return carry and overflow flags for signed 8-bit operands. If you're referring to the hardware carry and overflow bits inside the processor, no, that cannot be done portably in C.

0

精彩评论

暂无评论...
验证码 换一张
取 消