Что такое переполнение разрядной сетки
Перейти к содержимому

Что такое переполнение разрядной сетки

  • автор:

4.1.2. Переполнение разрядной сетки

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

1. Признаком переполнения разрядной сетки при сложении чисел в прямом коде является появление единицы переноса из старшего разряда цифровой части числа.

2. Признак переполнения разрядной сетки при сложении чисел в дополнительном и обратном коде — получение знака результата, про-тивоположного знакам операндов.

1) 0. 1100 1. 0101

2) 0. 0111 1. 1001

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

Для обнаружения переполнения разрядной сетки в составе цифрового автомата должны быть предусмотрены аппаратные средства, автоматически вырабатывающие признак переполнения — некий сигнал переполнения.

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

4.1.3. Модифицированный прямой, обратный и дополнительный код

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

1) Сложить два числа в модифицированном коде:

X= 00. 01012,Y= 00. 00112 ,X+Y= 510 + 310 = 810

2) Сложить X= -510 = -01012 = 11. 0101 ,Y= -810 = -10002 = 11. 1000

1 11. 0011 = -1310

3) Сложить X= 0,1101 ,Y= 0,1101,X+Y= 2610

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

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

4.1.4. Алгебраическое сложение чисел, представленных в форме с плавающей запятой

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

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

Полученная таким образом характеристика, одинаковая для обоих операндов, присваивается, как предварительная, результату операции. Далее осуществляется сложение или вычитание мантисс по правилам, аналогичным для чисел с фиксированной запятой, в частности мантисса одного из операндов преобразуется в дополнительный код для того чтобы процедуру вычитания свести к сложению. Если ответ получился в дополнительном коде, то его преобразуют в прямой, т.к. мантисса числа с плавающей запятой — это всегда модуль числа. Далее, при необходимости, выполняется нормализацияи округление ответа. В процессе нормализации мантисса поразрядно сдвигается влево или вправо. При сдвиге влево на каждый разряд вычитается единица из характеристики, предварительно присвоенной ответу. При каждом сдвиге вправо — к ней прибавляется единица. Отметим, что сдвиг мантиссы вправо необходим в тех случаях, когда при сложении мантисс произошло переполнение разрядной сетки. В процессе этих последних операций определяются окончательные значения характеристики и мантиссы ответа.

Таким образом, операция нормализации числа состоит из проверки выполнения условия

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

Нарушение нормализации может быть двух видов: нарушение справа, т.е. когда величина результата больше или равна 1, и слева, когда величина результата оказывается меньше 0,12.

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

0 r rmax ,

где rmax = l + pmax .

Имеем 8-разрядную мантиссу и 6-разрядный порядок, смещение равно 10002. Сложим 2 числа с мантиссами m1 = 0,10100000,m2 = 0,10000000 и с характеристикамиr1 = 001011,r2 = 001010. Т.к. порядки разные надо их выравнивать:r1 -r2 = 000001, значит надо сдвинутьm2 на 1 разряд вправо, а кr2 прибавить 1. После преобразований получим:

m2 = 0,01000000,r2 = 001010 + 000001 = 001011. Складываем мантиссы, получаем:m=m1 +m2 = 0,10100000 + 0,01000000 = 0,11100000,r= 001011.

Нормализация ответа не нужна.

Переполнение разрядной сетки машины

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

Складывали два отрицательных числа, а ответ — положительный. Чтобы не было переполнения, необходимо расширить разрядную сетку. Запишем числа А и В в пяти битах:

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

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

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

Переполнение разрядной сетки

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

Пример: A=+0,101 [A]доп = 0,101

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

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

— знаки слагаемых не совпадают со знаком суммы;

— есть перенос только в знаковый или только из знакового разряда.

Если при сложении чисел с фиксированной запятой возникло переполнение, то вырабатывается сигнал переполнения разрядной сетки и вычисления прекращаются.

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

Пример: A=- 0,101 [A]доп = 1,011

Переполнение разрядной сетки

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

Пример: A=+0,101 [A]доп = 0.101

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

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

— знаки слагаемых не совпадают со знаком суммы;

— есть перенос только в знаковый или только из знакового разряда.

Функция переполнения имеет вид:f=П1П2+ П1П2= П1П2

Если при сложении чисел с фиксированной запятой возникло переполнение, то вырабатывается сигнал переполнения разрядной сетки, и вычисления прекращаются.

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

Пример: A=- 0,101 [A]доп = 1.011

Модифицированные коды

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

А=+0,101 [A] мод доп = 00,101

А=-0,101 [A] мод доп = 11,011

Функция переполнения имеет вид:f=Зн1 Зн2 + Зн1 Зн2 = Зн1  Зн2.

Логическая схема формирования единичного сигнала при возникновении переполнения имеет следующий вид

Машинные формы представления чисел.

Существуют два основных способа представления данных в ЭВМ: с фиксированной и плавающей запятой.

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

Определим диапазон представления чисел для этого формата.

В зависимости от размеров целой и дробной частей возможно следующее:

± , 1 1 . . . 1 1

1) k=0, l=n Amax=1-2 -n

± 1 1 . . . 1 1,

2) k=n, l=0 Amax=2 n -1

± , 0 0 . . . 0 1

3) k=0, l=n Amin=2 -n

± 0 0 . . . 0 1,

4) k=n, l=0 Amin=1

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

Представление чисел в форме с плавающей запятой. В общем виде числа с плавающей запятой имеют следующий вид:

где mA— мантисса, арA— порядок числа А. Порядок (с учетом знака) показывает, на сколько разрядов и в какую сторону сдвинута запятая при замене формы записи числа с естественной на нормальную.

Например, А10= 239,745 = 0,239745 10 3 = 239745 10 -3 .

Наиболее распространено и удобно для представления в ЭВМ ограничение вида r -1 ≤mA1.

Форма представления чисел, для которых справедливо данное ограничение, называется нормализованной. Так как абсолютное значение мантиссы в этом случае лежит в диапазоне отr -1 до 1-r — n , гдеn– число разрядов мантиссы без знака, то положение разрядов числа в его машинном изображении непостоянно. Отсюда и название этой формы представления чисел – с плавающей запятой. Формат машинного изображения чисел с плавающей запятой должен включать знаковые поля (мантиссы и порядка), поле мантиссы и поле порядка числа и имеет следующий вид:

Для данного формата разрядной сетки можно записать следующий диапазон представления чисел.

Для упрощения операций над порядками применяют представление чисел с плавающей запятой со смещенным порядком: p=p+N, гдеN– целое положительное число (смещение),N=max(-p). ОбычноN=2 k , гдеk- число двоичных разрядов в поле цифр несмещенного порядка. В этом случае поле знака порядка избыточно, так какp’ всегда положительно. Такие смещенные порядки называютхарактеристиками. В зависимости от типа данных числа с плавающей запятой в памяти ЭВМ хранятся в одном из следующих трех форматов:

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

В стандарте IEEEкрайние значения порядка (характеристики) зарезервированы и не используются для представления обычных чисел. Максимальное значение характеристики представленное всеми единицами при положительном знаке числа зарезервировано для представления значения (+ ∞) при нулевой мантиссе. При знаке минус число с максимальной характеристикой используется для представления (- ∞) и неопределенности. Значение с минимальной характеристикой равной нулю зарезервировано для представления денормализованных чисел (положительных и отрицательных), а также для представления нуля (представляется всеми нулями), причем различают +0 и –0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *