При выполнении арифметических операций возможно получение результата, не помещающегося в разрядной сетке машины. Такие ситуации должны быть обработаны соответствующим образом. Прежде всего, необходимо сформулировать критерии переполнения разрядной сетки.
1. При сложении чисел с одинаковым знаком получается результат другого знака.
2. При сложении двух чисел имеется перенос из старшего числового разряда в знаковый разряд, но отсутствует перенос из знакового разряда.
3. При сложении двух чисел имеет место перенос из знакового разряда, но отсутствует перенос из старшего числового разряда в знаковый.
4. При наличии обоих переносов: из старшего числового разряда в знаковый и из знакового разряда - (как и при их одновременном отсутствии) переполнения разрядной сетки нет.
При наличии очень жестких ограничений на разрядность аппаратных средств эти критерии позволяют обнаруживать переполнение разрядной сетки. Однако более удобный критерий переполнения разрядной сетки имеет место при использовании модифицированных кодов.
Модифицированные коды.
В модифицированных кодах вслед за знаковым разрядом вводится разряд переполнения, имеющий формат цифр используемой системы счисления. Т.е. в двоичной системе счисления разряд переполнения занимает один бит. В десятичной и шестнадцатеричной – четыре бита. В восьмеричной – три бита. При выполнении алгебраического сложения первый знаковый разряд, он обозначается Sg1, всегда сохраняет правильное значение знака результата. Разряд переполнения служит для контроля переполнения разрядной сетки.
В двоичной системе счисления запись числа в модифицированном коде имеет вид:
Sg1 Sg2.c1,c2,…,cn, где c1,c2,…,cn – числовые разряды, Sg1 Sg2 – два знаковых разряда, каждый из которых занимает один бит. Точка между знаковой и числовой частью служит исключительно для удобства чтения чисел, так как в разрядной сетке регистра отсутствует какой-либо разделитель этих двух частей в записи числа. Положение запятой при такой записи обозначается только в пояснениях, которые содержатся в сопровождающей документации.
Критерий переполнения d разрядной сетки формулируется следующим образом:
d =0 Û Sg 1= Sg 2.
Если Sg 1 ¹ Sg 2, и Sg 1=0, говорят о положительном переполнении разрядной сетки.
Если Sg 1 ¹ Sg 2, и Sg 1=1, говорят об отрицательном переполнении разрядной сетки.
При обработке чисел в форме с плавающей запятой положительное переполнение разрядной сетки порядка в результате вычислений сопровождается выработкой требования прерывания. Отрицательное переполнение разрядной сетки порядка не требует прерывания. В этом случае результату присваивается значение 0, порядок и мантисса обнуляются.
При представлении чисел в форме с плавающей запятой данные представляются в нормализованном виде. Допустимые значения нормализованной мантиссы находятся в диапазоне p -1 £ | m | <1.
Если мантисса результата вычислений не удовлетворяет заданному диапазону значений в правой части неравенства, т.е. , говорят о нарушении нормализации справа (переполнении разрядной сетки).. Критерием нарушения нормализации справа является d =1 (d =1 Û Sg 1 ¹ Sg 2).
Переполнение разрядной сетки мантиссы требует выполнения определенных действий: если Sg 1 ¹ Sg 2, необходимо выполнить арифметический сдвиг мантиссы на один разряд вправо и прибавить единицу к значению порядка. Поскольку при сложении двух чисел может произойти переполнение разрядной сетки не более чем на один разряд, процедура нормализации при этом занимает один такт автоматного времени.
Если , говорят о нарушении нормализации слева. Критерием нарушения нормализации слева является величина l.
l =1 Û Sg 2= c 1 , т.е. в случае равенства значений знакового разряда и старшего числового разряда при отсутствии переполнения разрядной сетки. Очевидно, l=1 означает, что значение мантиссы меньше, чем р-1. Для нормализации числа требуется выполнить сдвиг мантиссы на один разряд влево и вычесть 1 из значения порядка.
Дата: 2018-12-28, просмотров: 291.