Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
3.2. ОПЕРАЦИЯ АЛГЕБРАИЧЕСКОГО СЛОЖЕНИЯ В ЭВМПри вычислении суммы двух чисел возможны два случая: слагаемые имеют одинаковые знаки; слагаемые имеют различные знаки. В соответствии с этим алгоритмы получения суммы для каждого из вариантов значительно отличаются между собой. Так, алгоритм получения суммы двух чисел с одинаковыми знаками определяется следующим образом: 1) сложить два числа; 2) сумме присвоить знак одного из слагаемых. В то же время алгоритм получения алгебраической суммы записывается следующим образом: 1. Сравнить знаки слагаемых и, если они одинаковы, то выполнять сложение по первому алгоритму. 2. Сравнить слагаемые по абсолютной величине, если знаки слагаемых разные. 3. Если есть необходимость, переставить числа местами (чтобы вычитать из большего меньшее). 4. Произвести вычитание двух чисел. 5. Результату присвоить знак большего слагаемого. Из этого следует, что первый алгоритм значительно проще второго. Следовательно, желательно преобразовать отрицательные числа таким образом, чтобы операцию вычитания заменить сложением» т. е. выполнять суммирование двух чисел следующим образом:
Для этого необходимо изобразить положительные и отрицательные числа единым натуральным кодом, что возможно достичь естественным образом при использовании систем счисления с положительным основанием и симметричной базой либо с отрицательным основанием и неотрицательной базой. При использовании однородных позиционных систем счисления с положительным основанием и неотрицательной базой натуральным кодом можно представить только положительные числа и нуль, т. е. в этом случае не существует единого натурального кода для положительных и отрицательных чисел. Это приводит к тому, что проблему представления чисел со знаком приходится решать на уровне слов при помощи специальных кодов: прямого, обратного и дополнительного. Способ построения этих кодов определяется функциями кодирования, которые должны обеспечить: 1. Запись алгебраического знака числа. 2. Представление отрицательных чисел при помощи вспомогательных, положительных, которые отличаются по изображению от положительных исходных чисел, т. е. области изображений положительных 3. Полную идентичность алгоритмов, выполнения операций над числами различных знаков и, следовательно, полную идентичность необходимого при этом оборудования. Прямой кодПрямым кодом отрицательного числа называется его изображение в естественной форме записи, у которого в знаковом разряде ставится единица. Прямой код положительного двоичного числа совпадает с его обычным изображением в естественной форме, так как знак кодируется нулем. Согласно определению, функция кодирования чисел в прямом коде для правильных дробей вида:
Рис. 3.3. следующим образом:
Величина числа А будет определяться в прямом коде следующим выражением:
при этом знаковому разряду не приписывается никакого веса. Очевидно, что диапазон изменения машинных изображений для прямого кода двоичной дроби лежит в пределах
В геометрической интерпретации область положительных чисел будет совпадать с областью их изображений, а для отрицательных чисел эти области будут отличаться (рис. 3.3): Пример, Записать числа
Отметим, что с ростом абсолютной величины числа А его код тоже возрастает во всей области изображения чисел. В прямом коде нуль имеет два значения: положительное Сложение чисел в прямом кодеПравила сложения чисел в прямом коде не отличаются от обычных правил сложения, т. е. если оба слагаемых имеют одинаковые знаки, то Рассмотрим 4 случая получения суммы при Пример.
Пример. Заданы
Пример. Заданы
Пример. Заданы
Пример. Заданы
Таким образом, в прямом коде знаковый разряд и цифровую часть числа нельзя рассматривать как единое целое, а выполнение операции сложения затруднено тем, что необходимо кроме сумматора иметь еще в составе машины и вычитатель кодов чисел. Эти недостатки настолько серьезны, что прямой код для выполнения операции алгебраического сложения не применяется, но он удобен при выполнении операций умножения и деления. Дополнительный кодЗамена операции вычитания операцией сложения основана на применении некоторых вспомогательных положительных чисел, однозначно связанных с исходными отрицательными числами, в связи с чем эти вспомогательные числа можно считать исходными, но некоторым образом закодированными. Вспомогательные числа могут быть найдены, если знаковому разряду приписать вес —
Рис. 3.4 при условии, что Если Из вышеизложенного следует, что с учетом знаков функция кодирования правильных дробей в дополнительном коде записывается следующим образом:
При этом всегда имеет место
Диапазон изменения машинных изображений двоичных чисел для формы представления с запятой, фиксированной перед старшим разрядом, составляет
Функция кодирования целых
Тогда диапазон изменения машинных изображений двоичных чисел для формы представления с запятой, фиксированной после младшего разряда, составляет
А соотношение (3.7) примет вид
где Геометрическая интерпретация дополнительного кода правильной дроби при Как видно из рис. 3.4 с ростом абсолютной величины дополнительный код положительного числа возрастает, а отрицательного — убывает. Ввиду того, что область чисел и область изображений равны по длине модуля Примеры. Записать числа
В случае отрицательных дробей нет необходимости суммировать А с основанием системы счисления, так как между отрицательными цифрами основных разрядов прямого кода
Представим
Подставляя (3.12) в
Приравнивая коэффициенты при одинаковых степенях
Отсюда следует, что преобразование цифр прямого кода в дополнительный может быть произведено как поразрядная операция путем получения в каждом разряде дополнения до Обратный переход от дополнительного кода числа к его естественному изображению производится аналогично. Пример. Привести
Нуль в дополнительном коде имеет единственное значение: Алгебраическое сложение в дополнительном кодеВ дополнительном коде операция вычитания заменяется операцией алгебраического сложения. При этом знаковый разряд и цифровая часть числа рассматриваются как единое целое, в результате чего с отрицательными числами машина оперирует как с неправильными дробями. Правильный знак суммы получается автоматически в процессе суммирования содержимого знаковых разрядов операндов и единицы переноса из цифровой части, если она есть. Для доказательства будем полагать, что числа представлены в форме с фиксированной запятой, стоящей перед старшим разрядом. Считаем также для конкретности, что
Ввиду того что изображение положительного числа в дополнительном коде не отличается от его изображения в прямом коде, сумма двух чисел определяется по общим правилам:
Правильный знак при этом получается автоматически, так как знаковые цифры равны 0, а
Сумма положительна, значит результат должен быть получен в прямом коде
Правильный знак суммы получается, так как, с одной стороны, один знаковый разряд равен 1, с другой стороны, Иными словами, найденная сумма сравнима с результатом по модулю 2, т. е. требует коррекции Пример. Заданы
Так как сумма отрицательна, то она сразу получается в дополнительном коде. Правильный знак получается, так как один знаковый разряд равен 1 и нет 1 переноса в знаковый разряд суммы вследствие того что Пример. Заданы
Так как сумма отрицательна, то результат получается в дополнительном коде.
Правильный знак результата получается, так как оба знаковых разряда равны 1 и есть 1 переноса из цифровых разрядов в знаковые вследствие того что
В этом случае возникает перенос из знакового разряда суммы, который не должен учитываться, так как суммирование производится по модулю 2, т. е., как и во втором случае, сумма требует коррекции Пример, Заданы
Таким образом, во всех случаях знак суммы формируется автоматически в результате общих правил поразрядного суммирования знаковых и цифровых разрядов операндов, при этом правила и результат суммирования не изменяются, если слагаемые поменять местами. При сложении в дополнительном коде, при неправильном выборе масштабных коэффициентов Пример. Заданы
Заданы
Из приведенных примеров видно, что при алгебраическом сложении двух двоичных чисел в дополнительном коде признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из ее знакового разряда (положительное переполнение) или наличие переноса из знакового разряда суммы при отсутствии переноса в ее знаковый разряд (отрицательное переполнение). Если оба переноса есть или нет, то переполнение отсутствует. Для обнаружения переполнения разрядной сетки вводят вспомогательный разряд в знаковую часть изображения числа, который называют разрядом переполнения. Такое представление числа называется модифицированным, т. е. модифицированный дополнительный код отличается от обычного использованием двух знаковых разрядов. Тогда для модифицированного дополнительного кода функция кодирования запишется следующим образом:
Знак + числа запишется как 00, знак - как 11. Геометрическая интерпретация модифицированного дополнительного кода представлена на рис. 3.5. Область всех положительных чисел совпадает с областью изображений. Поэтому их изображения не отличаются от двоичной записи. Для перехода от отрицательного числа к его изображению нужно добавить к нему модуль 4. Можно выделить 4 подобласти в области изображений: 1. Подобласть изображений положительных правильных дробей, признаком принадлежности к которой является сочетание 00 в знаковых 2. Подобласть изображений положительных переполнений, признаком принадлежности к которой является комбинация 3. Подобласть изображений отрицательных правильных дробей, равных сумме двоичной дроби и модуля 4, признаком принадлежности к которой является комбинация 11 в знаковых разрядах.
Рис. 3.5. 4. Подобласть изображений отрицательных переполнений, равных сумме отрицательного переполнения с модулем 4, признаком принадлежности к которой является сочетание 10 в знаковых разрядах изображения. Таким образом, признаком переполнения разрядной сетки при сложении в модифицированном коде будет наличие разных цифр в знаковых разрядах суммы. Пример. Заданы: а)
Таким образом, левый знаковый разряд всегда сохраняет правильный код знака результата. Поэтому для устранения возникшего переполнения необходимо сдвинуть результат на один разряд вправо, собственно увеличив масштабный коэффициент, а в правом знаковом разряде результата продублировать содержимое левого знакового разряда. Обратный кодЕсли знаковый разряд числа имеет вес
Такие коды принято называть обратными, так как в них взаимное преобразование отрицательных чисел не требует привлечения арифметических операций. Положительные числа в обратном коде имеют такое же изображение, как и в прямом и дополнительном кодах. Наибольшая величина положительного числа вновь есть
Рис. 3.6. Отсюда взаимное преобразование прямого и обратного кодов осуществляется как поразрядная операция взятия дополнения до Функция кодирования в обратном коде запишется для двоичных чисел следующим образом:
Геометрическая интерпретация обратного кода представлена на рис. 3.6. Пример. Заданы
Таким образом, преимуществом обратного кода перед дополнительным является простая связь с прямым кодом, так как преобразование числа из прямого кода в обратный и наоборот является поразрядной операцией, что упрощает и ускоряет преобразование чисел. Особенностью обратного кода является то, что при получении суммы, очевидно, необходимо предусмотреть коррекцию результата на Алгебраическое сложение в обратном кодеВ обратном коде, как и в дополнительном операция вычитания заменяется операцией сложения. При этом знаковый разряд и цифровая часть числа рассматриваются так же, как единое целое, вследствие чего машина оперирует с отрицательными числами как с неправильными дробями. Правильный знак суммы получается автоматически в процессе суммирования цифр знаковых разрядов операндов и единицы переноса из цифровой части, если она есть. Характерной особенностью обратного кода является наличие циклического переноса (если он возникает) из знакового разряда в младший разряд цифровой части, благодаря которому осуществляется коррекция суммы на Рассмотрим 4 возможных случая сложения двух чисел при условии
Так как обратный код положительных чисел не отличается от самих чисел, то определение их суммы совпадает с ее получением в прямом коде.
Сумма положительна, следовательно, результат должен получиться в прямом коде
Полученная сумма отличается от истинной на Пример. Заданы
Сумма отрицательна, значит, результат должен получиться в обратном коде
т. е. результат коррекции не требует. Пример. Заданы
Во втором и третьем случаях при
Сумма отрицательна» следовательно, результат должен быть получен в обратном коде
Как и во втором случае необходима коррекция результата только на единицу младшего разряда, так как для изображения 2 в разрядной сетке ЭВМ нет места. Поправка вносится аналогично второму случаю. Пример. Заданы
Очевидно, что во всех рассмотренных случаях сложения кодов слагаемые можно поменять местами и при этом код суммы не изменится. Требуемая для реализации коррекции суммы на величину В целом же по аппаратурным затратам, времени реализации и структуре алгоритма алгебраическое сложение обратных кодов эквивалентно сложению дополнительных кодов. Таким образом, обратный код достаточно удобен для выполнения операции алгебраического сложения, если учесть простоту перевода отрицательных чисел из прямого кода в обратный и наоборот. Однако выполнять операции умножения и деления в обратном коде смысла нет. В обратном коде переполнение разрядной сетки возможно при неправильном выборе масштабных коэффициентов в первом и в четвертом случаях. Признаком переполнения, как и в других кодах, является отличие знака результата от знаков слагаемых. Для упрощения обнаружения переполнения разрядной сетки в ЭВМ используется модифицированный обратный код, функция кодирования которого записывается таким образом:
Признаком переполнения разрядной сетки являются разные цифры в знаковых разрядах суммы. Примеры. Заданы: а)
Таким образом, для замены операции вычитания операцией сложения необходимо произвести специальное кодирование чисел. В современных ЭВМ операции в режиме фиксированной запятой выполняются, как правило, над целыми числами. Отрицательные числа хранятся в оперативной памяти и участвуют в операциях в дополнительном коде. Операции выполняются над числами, выравненными по младшим разрядам, правее которых считается фиксированная запятая. Поэтому операнды — положительные целые числа, занимающие только часть разрядов слова, имеют во всех разрядах левее старшей значащей цифры 0, а отрицательные — единицы. При необходимости удлинение операндов в сторону старших разрядов производится простым добавлением разрядов, содержимое которых равно содержимому знакового разряда (0 или 1). Знаковые разряды участвуют в операциях сложения — вычитания наравне с цифровыми. Предварительный анализ знаковых разрядов операндов не производится, так как при выполнении команды «вычесть» вычитаемое автоматически преобразуется в инверсный код. По окончании процесса суммирования производится анализ результата и выработка его признака: больше, меньше, равен 0, переполнение.
|
1 |
Оглавление
|