Вопрос

Можно ли добавить два подписанных 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top