Перейти к содержанию
    

признак переполнения при сложении нескольких чисел в доп. коде

Здравствуйте, коллеги.

 

Никак не могу сообразить алгоритм определения переполнения при сложении нескольких (более 2х) чисел в дополнительном коде.

Подскажите, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

каждое сложение двух чисел одной разрядности = +1 бит. дальше тривиально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это понятно. вопрос в том, как потом определить случилось ли переполнение или просто перенос

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если есть перенос из суммы в знак, но нету переноса из знака: переполнение в отрицательную сторону. Ну и обратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не определен тип процессора.

На универсальных процессорах задачу придется решать программно.

А DSP должны иметь специальный флаг переполнения (у ADSP-21XX это AV,MV). При этом если AV=1 и нет переноса, то переполнение в положительную сторону, есть перенос - в отрицательную. Там же реализован и режим насыщения (автоматическая замена результата максимальным по модулю числом при возникновении переполнения).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не определен тип процессора.

На универсальных процессорах задачу придется решать программно.

А DSP должны иметь специальный флаг переполнения (у ADSP-21XX это AV,MV). При этом если AV=1 и нет переноса, то переполнение в положительную сторону, есть перенос - в отрицательную. Там же реализован и режим насыщения (автоматическая замена результата максимальным по модулю числом при возникновении переполнения).

На самом деле большинство универсальных процессоров аппаратно определяет возникновение переполнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

каждое сложение двух чисел одной разрядности = +1 бит. дальше тривиально.
Точнее так для общего случая: +ceil(log2(N_add)) бит. Т.е. если заранее известно, что будут складываться 4 числа, то разрядность надо увеличить не на 4 бита, а всего на 2.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...