Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Org_EVM_var_dlya_MGOU.doc
Скачиваний:
20
Добавлен:
21.04.2019
Размер:
6.1 Mб
Скачать

4.3. Машинные коды чисел

Кодом называется любое обозначение, отличное от общепринятого. Общепринято, например, положительные числа отмечать знаком “+” (или вообще не указывать знак), а отрицательные числа отмечать знаком “-”. Числа разного знака необходимо уметь изображать состояниями двухпозиционных элементов при вводе их в машину. Для изображения знака числа вводится дополнительный двухпозиционный (знаковый разряд), причем состоянию “0” этого разряда изображает знак “+”, а состояние “1” - знак “-”. Такое изображение чисел со знаком называется прямым кодом. Число X в прямом коде будем условно изображать как [X]пр. В числах, представленных в естественной форме, знаковый разряд помещается непосредственно перед масштабированным числом. Таким образом, прямой код числа, представленного в естественной форме, (это в полной мере относится и к мантиссе числа, представленного в полулогарифмической форме), образуется по правилу: если число X положительно, т.е. X= +X1, X2, ... Xn (X1¸Xn - цифровые разряды), то [X]пр=0, X1, X2, ... Xn; если число X отрицательно, т.е. X= -X1, X2, ... Xn, то [X]пр=1, X1, X2, ... Xn.

Примеры: 1) X=+0,1011 [X]пр=0,1011,

2) X=-0,1101 [X]пр=1,1101.

Как известно, правила сложения многоразрядных чисел отличаются от правил вычитания. Чтобы выполнить эти операции на ЭВМ, необходимо иметь два самостоятельных устройства - сумматор и вычитатель. Но оказалось, что можно обойтись только одним устройством - сумматором, если изображать числа, участвующие в операции, в дополнительных кодах. Дополнительный код положительного числа совпадает с прямым кодом этого числа.

Дополнительный код отрицательного числа получается следующим образом:

а) в знаковом разряде записывается “1”;

б) производится замена в цифровых разрядах “1” на “0” и “0” на “1”;

в) осуществляется прибавление “1” в младший цифровой разряд результата.

Дополнительный код числа будем обозначать как [X]g.

Пример: Пусть X=-0,1101101. После выполнения пунктов а) и б) имеем 1.0010010. Прибавляя “1” в младший цифровой разряд, находим дополнительный код числа X: [X]g=1,0010011.

Иногда для изображения знака используется не один знаковый разряд, а два. Такие коды называются модифицированными, и они позволяют обнаружить переполнение сети. Различают модифицированные прямой и дополнительный коды. В этих кодах знак “+” изображается комбинацией “00”, а знак “-” - комбинацией “11” в знаковых разрядах.

Примеры: X=+0,1101101, =00,1101101,

X=-0,11011, =11.11011, =11,00101.

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

0(или 1)

hn. . . . . . . . . h0

Знак

числа

Цифровые разряды масштабированного числа

Рис. 4.3.1. Разрядная сетка числа с фиксированной запятой

Переполнение разрядной сетки - полное искажение результата. Поясним это на примерах.

1. Пусть даны числа: =+0,1101 и =+0,1001.

При сложении этих чисел получаем

0 , 1 1 0 1

+ 0 , 1 0 0 1

1 , 0 1 1 0

Несмотря на положительные знаки слагаемых в знаковом разряде результата появилась “1”, т.е. сумма получилась отрицательной. Получилось это потому, что из-за неправильно выбранных масштабов при сложении масштабированных чисел и появился перенос из цифрового разряда в знаковый разряд.

Пусть даны числа: =-0,1101 и =-0,1001.

Тогда

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

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

Рассмотрим следующие примеры.

0 0 , 1 1 0 1

+ 0 0 , 1 0 0 1

0 1 , 0 1 1 0

1 1 , 0 0 1 1

+ 1 1 , 0 1 1 1

1 1 0 , 1 0 1 0

Как только в результате выполнения операции сложения чисел в естественной форме с применением модифицированного кода в знаковых разрядах оказывается комбинация “01” или “10”, то это означает, что произошло переполнение разрядной сетки.

Разрядная сетка ЭВМ и форма представления числовой информации однозначно определяет диапазон представляемых в ЭВМ чисел и как следствие, точность получаемых результатов.

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

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

n

m

n

m

0,11…1

2-11…1

X

0,11…1

2+11…1

0(или 1)

m

0 (или 1)

n

Знак порядка

Порядок

Знак мантиссы

Мантисса

Рис. 4.3.2. Разрядная сетка числа с плавающей запятой

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]