Carry save aithmetic использует в два раза больше бит, одно слово для хранения «виртуальной суммы», одно для удерживания «виртуального переноса», чтобы избежать распространения переноса, который является лимитирующим фактором в аппаратной скорости ,Правое смещение номера сохранения переноса
У меня есть система, которая требует деления этих чисел на две степени, но просто смещение вправо обоих чисел не работает во всех случаях, например. два 16-битных переносных номера сохранения, которые вы добавляете для создания 4000, C001 - это виртуальная сумма, 7FFF - виртуальный перенос.
C001 + 7FFF = 4000 (discard overflow bits)
but after right shift
6000 + 3FFF = 9FFF (when it should be 2000)
Вкратце: Как вы разделите номер сбережения на две силы? (Сохраняя при этом номер сохранения переноса)
Не могли бы вы объяснить смысл ваших строк? Что означает c001 7fff = 4000? –
Добавлено немного больше. После всех операций вы добавляете виртуальный перенос и виртуальное сохранение, чтобы вернуть обычный двоичный номер – StanOverflow