Контроль переполнения в компьютерных системах - Компьютерная арифметика

Возможно только при сложении чисел с одинаковыми знаками, когда для представления результата недостаточно отведенного количество разрядов (требуется больше, чем для представления операндов). Это может приводить не только к неправильному (по абсолютной величине) результату, но и к неправильному его знаку. Независимо от кода для представления отрицательных чисел (обратный или дополнительный) переполнение разрядной сетки имеет место всегда, если только при сложении положительных чисел возникает перенос в знаковый разряд, а при сложении отрицательных чисел такой перенос равен нулю. Введение масштабных коэффициентов, на которые необходимо умножить все исходные данные перед решением задачи, позволяет предотвратить переполнение. В компьютерных системах предусматривают специальные средства для обнаружения переполнения разрядной сетки:

    - программный способ; основан на том, что при сложении чисел с одинаковыми знаками знак суммы должен совпадать со знаками операндов; - аппаратный способ; основан на использовании модифицированных кодов.

При использовании модифицированных кодов знак числа изображается двумя одинаковыми цифрами. Эти цифры в процессе выполнения операций обрабатываются так же, как и числовые разряды. При этом появление в знаковых разрядах разных цифр (01 при сложении положительных и 10 при сложении отрицательных двоичных операндов) свидетельствует о переполнении разрядной сетки.

Модифицированный код позволяет формировать правильный знак результата даже при наличии переполнения.

Этот знак сохраняется во втором (старшем) знаковом разряде. Такой способ обнаружения переполнения разрядной сетки наиболее распространен в компьютерных системах, несмотря на некоторую избыточность в аппаратных средствах для представления чисел, поскольку позволяет оперативно (то есть, одновременно с результатом) получить информацию о переполнении.

На рис.3.6 представлен формат двоичного знакового числа с использованием модифицированного кода.

формат двоичного знакового числа с использованием модифицированного кода

Рисунок 3.6 - Формат двоичного знакового числа с использованием модифицированного кода.

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

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

Операцию начинают с младших частей операндов, "продвигаясь" далее в сторону старших частей. На каждом шаге должны обрабатываться возникающие переносы (или заемы).

Похожие статьи




Контроль переполнения в компьютерных системах - Компьютерная арифметика

Предыдущая | Следующая