Переполнение и нести флаги
Вопрос
Можно ли добавить два подписанных 8-битных номера вместе и установить биты для переноски, так и переполнения?
Решение
На ваш комментарий ваш вопрос, кажется, «Возможен ли как перенос, так и переполнение для дополнения для двух», добавленные с участием подписанного номера? " Это. Типичная реализация состоит в том, чтобы взять эксклюзивный или перенос для последнего сумматора с выходом в конце цепочки - следовательно, переполненное добавление негативных чисел приведет к установлению бита на вынос и переполненный бит для установки.
Вот пример, добавить -1 к -128:
Carry 10000 0000
1000 0000 (-128)
1111 1111 (-1)
---------
0111 1111 (oops, this is 127!)
Перенос будет установлен, поскольку последнее добавье привело к переносу - и переполнением будет установлено на основе правила выше (также, обратите внимание, что -128 добавлено к -1, очевидно, не 127)
Другие советы
У вас нет доступа к флагам в C, даже если вы можете получить компилятор для генерации кода, который устанавливает их, у вас нет способа использовать их.
Вы можете написать собственную процедуру Add Contriple в C, которая вернет флаги переноса и переполнения для подписанных 8-битных операндов. Если вы имеете в виду аппаратные и переполненные биты внутри процессора, нет, что нельзя сделать портативно в C.