Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_итог7.doc
Скачиваний:
19
Добавлен:
17.11.2019
Размер:
16.96 Mб
Скачать

3.1.7 Обнаружение переполнения разрядной сетки в пдк

Для обнаружения переполнения в настоящее время используются следующие способы:

  • сравнение знака суммы со знаками операндов.

Работоспособность этого способа, подтвержденна ранее теоретически и проиллюстрированный на примерах 1–7.

В силу прстоты он находит широкое практическое применение. Исследование Случаев 1–5 позволяет так сформулировать признаки возникающего переполнения:

  1. признаком положительного переполнения, если слагаемые положительные числа, является единица в знаковом разряде суммы (“отрицательная” сумма);

  2. признаком отрицательного переполнения, если слагаемые отрицательные числа, является нуль в знаковом разряде суммы (“положительная” сумма).

Особые выводы следуют при “особом случае” переполнения

  1. при сложении в ПДК может возникнуть т.н. “особый случай переполнения”

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

  3. “особый случай переполнения” не обнаруживается путем сравнения знаков операндов со знаком суммы, а требует особой процедуры;

  4. признаком переполнения такого типа является а) единичное значение в знаковом разряде суммы SS=1 б) нулевое значение модуля суммы;

  5. обнаружение “особого случая переполнения”, требуют анализа двух признаков результата, что усложняет алгоритмы сложения чисел в дополнительном простом коде.

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

В алгоритме в упрощенном виде представлены: блок преобразования слагаемых в дополнительные коды (блок 1), блок суммирования (блок 2) и блок преобразования полученной суммы в прямой код (блок 6).

Более детально раскрыта процедура анализа переполнения. Используется метод сравнения знаков суммы со знаками слагаемых .

Исходные предпосылки следующие:

  1. на входе сумматора – поток чисел с произвольным знаком и произвольным модулем;

  2. отрицательные числа преобразуются в дополнительный код

  3. в случае обнаружения переполнения алгоритм суммирования прерывается и формируется признак переполнения OF (Overflow Flag)

  4. вследствие использования дополнительных кодов, возможен “особый случай переполнения”.

Алгоритм предполагает, что возможны все рассмотренные случаи 1–9.

Коротко комментируя алгоритм, необходимо отметить, что за анализом формальных признаков (знаки SA,SB,SS слагаемых и суммы, а также величины модуля суммы) стоит логическая процедура соотнесения полученного результата суммирования с одним из случаев, рассмотренных ранее. Цель соотнесения – ответ на вопрос “ Переполнение есть?”.

В Блоке 3 алгоритма, путем сравнения знаков SAи SB слагаемых А и В обнаруживается Случаи 6–9 (разные знаки операндов), при которых переполнение в принципе невозможно. Далее, в Блоке 4, переход в который возможен только при равенстве знаков слагаемых SA=SB, путем сравнения знака любого слагаемого, например, SA со знаком SS суммы, обнаруживаются Случаи 2,4 переполнения. Далее, путем совместного анализа на 0 модуля суммы и на единичное значение ее знакового разряда, Блоком 5 обнаруживается Случай 5 особого переполнения. На выходе Блока5 –результат, соответствующий Случаям 1,3 т.е. сумме без переполнения.

Рассмотренный алгоритм находит широкое практическое применение при реализации арифметических операций в средствах вычислительной, микропроцессорной и информационной техники.

3.2. Cложение чисел в простых обратных кодах (ПОК)

Сложение в простых обратных кодах основано на следующих правилах.

Процедура СлОК. Основные правила сложения в простых обратных кодах:

  1. положительные операнды участвуют в сложении в прямых кодах;

  2. отрицательные операнды должны быть преобразованы в обратные простые коды и, в таком виде – суммироваться;

  3. знаковые разряды слагаемых участвуют в операции наравне с числовыми разрядами;

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

  5. если сумма – положительное число, то результат суммирования содержит нуль в знаковом разряде. Сумма в этом случае сформирована в прямом коде. Напротив, если сумма – отрицательна, то результат суммирования содержит единицу в знаковом разряде, а сумма представлена в обратном коде;

  6. при суммировании операндов одного знака возможно отрицательное или положительное переполнение, которое определяется путем сравнения знака суммы со знаком операнда (любого)

  7. при использовании обратного код невозможен случай особого переполнения, а при тех же соотношениях модулей операндов имеет место простое отрицательное переполнение разрядной сетки.

Из Процедуры СлОК вытекают следующие особенности сложения чисел в обратных кодах:

  1. перенос из знакового разряда, который может возникнуть при сложении, не отбрасывается как в дополнительных кодах, а должен быть подсуммирован в младший разряд суммы;

  2. для обратных кодов не характерен особый случай переполнения.

В Таблице 3 приведены случаи суммирования, имеющие особенности в случае применения обратных кодах. Отличия имеют место для случаев 3,4, 8,9 (Табл.2).

возникает перенос из знакового разряда суммы и необходимо его подсуммирование в младший разряд. В случае 5 соотношение величин модулей слагаемых вызывает “особый ”случай переполнения в дополнительных кодах. Предполагается, что особый случай будет отсутствовать при использовании обратных кодов. Перечисленные случаи требуют более детального анализа.

Отличие остальных случаев заключается только в используемых при сложении кодах слагаемых и кодах, в которых формируется отрицательная сумма.

Таблица 3 – Случаи сложения, вызывающие перенос из знакового разряда

Случай сложения из табл.2

Знак

результата

Переполнение

Способ определения переполнения

Случай 3

“–”

нет

Случай 4

“+”

есть

Сравнение знаков

Случай 5

“+”

простое переполнение, особое переполнение невозможно

Сравнение знаков

Случай 6

“+”

переполнение невозможно

переполнение невозможно

Случай 9

“–”

Далее особенности обратных кодов иллюстрированы на примерах для случаев, имеющих особенности о сравнению с дополнительными кодами.