Реферат Курсовая Конспект
Машинные коды чисел и действия над ними - раздел Информатика, Системы счисления и кодирования информации Сущность И Назначение Машинных Кодов. В Эвм Посредством Применения Специальны...
|
Сущность и назначение машинных кодов. В ЭВМ посредством применения специальных машинных кодов все арифметические операции над числами сводятся к выполнению операции арифметического сложения и сдвигу их кодов вправо или влево. При этом учитываются знаки чисел, автоматически определяются знак результата и признаки возможного переполнения разрядной сетки заданных форматов. Применяются прямой, обратный и дополнительный коды. Замена операции вычитания на сложение может осуществляться с помощью обратного и дополнительного кодов. Сущность этого процесса заключается в том, что вычитаемое В, как отрицательное число, представляется в виде дополнения до некоторой константы К, при которой выполняется условие К-В>0. Обратный и дополнительный коды отличаются выбором значения константы К. Следовательно, операцию С = А-В, где А и В целые положительные числа в любой системе счисления, можно представить в виде:
где 10 — основание любой системы счисления.
К = 10n — константа образования дополнительного кода;
К == 10n-1 — константа образования обратного кода;
п — количество разрядов представления целых чисел в выбранной системе счисления (для дробных чисел п = 0).
Из выражения (1.8) следует, что из полученной суммы нужно исключить добавленную к вычитаемому константу.
Рассмотрим примеры действий над числами.
25= С.
Из примера 1 следует, что операция вычитания заменяется операцией сложения с дополнениями, при этом из полученной суммы константа дополнительного кода компенсируется просто ликвидацией 1 переноса из старшего разряда суммы, а константа обратного кода компенсируется путем исключения единицы переноса и добавления ее к младшему разряду суммы, т. е. требуется дополнительная операция сложения. Поэтому в ЭВМ для выполнения действий используется дополнительный код, а обратный код используется для образования дополнительного кода.
По результатам действий под числами с дополнениями легко определить знак суммы и наличие переполнения разрядной сетки (сумма равна или больше по модулю константы образования дополнительного кода).
Из примеров 1 и 2 следует, что при сложении чисел с разными знаками (С и C1) единица переноса из старшего разряда суммы является признаком положительного результата (С), отсутствие переноса (C1) — признаком отрицательного результата, при этом константа образования дополнительного кода не скомпенсирована и осталась в сумме.
При сложении чисел с одинаковыми знаками признаки противоположны: отсутствие переноса единицы из старшего разряда при положительных, слагаемых (С2) является признаком положительного результата, наличие переноса при отрицательных слагаемых (С3) — признаком отрицательного, при этом одна константа компенсируется переносом, а вторая сохраняется в сумме. Эти же признаки в суммах (С2 и С3) указывают на отсутствие переполнения разрядной сетки для записи результатов (результаты имеют 2 десятичных разряда).
Здесь в обоих случаях при сложении чисел с одинаковыми знаками происходит переполнение разрядной сетки, признаками которого являются: наличие переноса из старшего разряда при положительных слагаемых (C4) и отсутствие переноса при отрицательных (С3). При получении суммы C5 перенос отсутствует, т. е. обе константы 102 остались в полученном результате. Следовательно, результат 76-102 = -24, 24-102 = -124 по модулю больше константы и в отведенные 2 разряда не умещается.
Рассмотрим образование кодов в двоичной системе счисления на примере А = ±34. Знак числа, как было указано выше, кодируется 0 или 1, записывается перед старшим разрядом и отделяется для наглядности точкой, которая не является частью кода и в разрядной сетке не отражается. Для простоты примем, что задана разрядная сетка в один байт, т. е. 8 двоичных разрядов, из которых один отводится под знак, а 7 для записи
Примем константу для дополнительного кода:
K(10) = 28 = К2. =101000 = 100000000
и константу для обратного кода: K(10) = 28-1 = К2 = -101000=11111111.
В таблице 6 приведены прямой, обратный и дополнительный коды для чисел А == 34 и А = -34.
Таблица 6
Правила образования машинных кодов. 1) прямой код положительного и отрицательного чисел отличается только знаковыми разрядами, модуль числа не изменяется;
2) положительное число в прямом, обратном и дополнительном кодах имеет одинаковое изображение;
3) обратный код отрицательного двоичного числа образуется из прямого кода положительного числа путем замены всех единиц, на нули, а нулей на единицы, включая знаковый разряд;
4) дополнительный код отрицательного числа образуется путем добавления единицы к младшему разряду обратного кода этого же числа или заменой в коде положительного числа всех нулей на единицы, а единиц на нули, исключая последнюю единицу и следующие за ней нули.
Определение прямого кода отрицательного числа по его обратному и дополнительному коду производится по тем же правилам.
Числа, представленные в естественной форме, в памяти ЭВМ представляются в дополнительном коде, числа в нормальной форме хранятся в прямом коде. Действия в ЭВМ выполняются в прямом и дополнительном кодах, обратный код используется для получения дополнительного кода.
Действия над машинными кодами чисел. А. Действия над числами, представленными в естественной форме
При сложении кодов чисел в естественной форме следует учитывать следующие положения:
1) числа хранятся в памяти в дополнительном коде;
2) в сумматоре числа складываются вместе со знаками, при этом образуется знак результата;
3) при сложении чисел с разными знаками единица переноса из знакового разряда стирается, т. е. компенсируется одна константа образования дополнительного кода;
4) признаками переполнения разрядной сетки при сложении кодов чисел с одинаковыми знаками могут служить:
а) знак суммы не соответствует знакам слагаемых;
б) переносы из старшего разряда суммы в знаковый и из знакового не согласуются, т. е. один из них присутствует, а другой отсутствует.
Очевидно, что если переносы согласуются, т. е. оба отсутствуют или оба присутствуют, то переполнения разрядной сетки не происходит.
Пример 4. Даны два числа: А = 254,5 и B= 175.
Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.
Решение.
а) Представим исходные числа в двоичной системе счисления:
A(10)= 254 ~ A(16)=FE ~ A(2)= 11111110;
B(10)= 175 ~ B(16)=AF ~ B(2)= 10101111.
б) Составим машинные коды этих чисел с разными знаками:
[A]пк= 0.000000011111110;
[B]ПК= 0.000000010101 111.
[-А]дк= 1.111111100000010;
[-B]ДК= 1.111111101010001
в) Выполним действия:
Из примера следует:
1) при получении сумм слагаемых с одинаковыми знаками (C1 и C4) переполнения разрядной сетки не произошло, так как знак суммы соответствует знакам слагаемых и переносы в знаковый и из знакового согласуются;
2) при получении сумм С2 и C4 образовался перенос из знакового разряда, который следует исключить;
3) суммы C1 и С2 — положительные, С3 и С4 — отрицательные, т. е. знаки результатов получены при сложении чисел со знаками.
Полученные суммы заносятся в разрядную сетку памяти в дополнительном коде, т. е. без изменения.
Проверка. Для этого следует перевести полученные суммы любым способом в десятичную систему и сравнить с заданием.
Полученные суммы не соответствуют ожидаемым результатам, поскольку произошло переполнение разрядной сетки за допустимые значения (32767). Переполнение разрядной сетки легко определить либо по первому признаку — знаки сумм C1 и С2 не соответствуют знакам слагаемых, либо по второму—переносы в знаковый и из знакового разряда в суммах С1 и С2 не согласуются. В этих случаях в больших ЭВМ вырабатывается запрос на прерывание программы, в некоторых типах малых ЭВМ производится автоматический переход к нормальной форме представления данных.
Замечание. Операции умножения и деления производятся над абсолютными значениями чисел — в прямом коде. Знак произведения определяется сложением по модулю 2 знаков сомножителей (0+0== 0,1+0=1, 1+1 =0), знак частного — сложением по модулю 2 знаков делимого и делителя, а знаку остатка присваивается знак делимого.
– Конец работы –
Эта тема принадлежит разделу:
ЭВМ являются арифметическими машинами реа лизующими алгоритмы путем выполнения последова тельных арифметических действий Арифметические действия... Системы счисления и кодирования... Перевод чисел из любой системы счисления в деся тичную систему...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Машинные коды чисел и действия над ними
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов