Главная > Прикладная теория цифровых автоматов
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

3.2. ОПЕРАЦИЯ АЛГЕБРАИЧЕСКОГО СЛОЖЕНИЯ В ЭВМ

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

1) сложить два числа;

2) сумме присвоить знак одного из слагаемых.

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

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

2. Сравнить слагаемые по абсолютной величине, если знаки слагаемых разные.

3. Если есть необходимость, переставить числа местами (чтобы вычитать из большего меньшее).

4. Произвести вычитание двух чисел.

5. Результату присвоить знак большего слагаемого.

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

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

1. Запись алгебраического знака числа.

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

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

Прямой код

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

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

Рис. 3.3.

следующим образом:

Величина числа А будет определяться в прямом коде следующим выражением:

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

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

Пример, Записать числа в прямом коде: 0.101011;

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

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

Сложение чисел в прямом коде

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

Рассмотрим 4 случая получения суммы при

Пример.

Пример. Заданы Найти

Пример. Заданы Найти

Пример. Заданы Найти

Пример. Заданы Найти

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

Дополнительный код

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

Рис. 3.4

при условии, что принимает значение 0 для положительных чисел и 1 для отрицательных.

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

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

При этом всегда имеет место

Диапазон изменения машинных изображений двоичных чисел для формы представления с запятой, фиксированной перед старшим разрядом, составляет

Функция кодирования целых -разрядных чисел в дополнительном коде запишется таким образом:

Тогда диапазон изменения машинных изображений двоичных чисел для формы представления с запятой, фиксированной после младшего разряда, составляет

А соотношение (3.7) примет вид

где — количество числовых разрядов.

Геометрическая интерпретация дополнительного кода правильной дроби при представлена на рис. 3.4.

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

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

Примеры. Записать числа в дополнительном двоичном коде.

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

Представим в виде

Подставляя (3.12) в получим

Приравнивая коэффициенты при одинаковых степенях имеем

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

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

Пример. Привести к естественному виду.

Нуль в дополнительном коде имеет единственное значение:

Алгебраическое сложение в дополнительном коде

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

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

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

Правильный знак при этом получается автоматически, так как знаковые цифры равны 0, а по условию, т. е. нет 1 переноса в знаковый разряд.

Сумма положительна, значит результат должен быть получен в прямом коде

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

Иными словами, найденная сумма сравнима с результатом по модулю 2, т. е. требует коррекции которая производится автоматически, так как для изображения числа 2 в разрядной сетке ЭВМ нет места.

Пример. Заданы Найти

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

Пример. Заданы Найти

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

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

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

Пример, Заданы Найти

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

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

Пример. Заданы Найти

Заданы Найти

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

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

Знак + числа запишется как 00, знак - как 11.

Геометрическая интерпретация модифицированного дополнительного кода представлена на рис. 3.5.

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

Можно выделить 4 подобласти в области изображений:

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

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

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

Рис. 3.5.

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

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

Пример. Заданы: а) Найти

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

Обратный код

Если знаковый разряд числа имеет вес а не как это было в дополнительном коде, то количественный эквивалент числа заданного в позиционной системе счисления с основанием будет определяться как

Такие коды принято называть обратными, так как в них взаимное преобразование отрицательных чисел не требует привлечения арифметических операций. Положительные числа в обратном коде имеют такое же изображение, как и в прямом и дополнительном кодах. Наибольшая величина положительного числа вновь есть что для -разрядной двоичной дроби составит Отрицательных чисел теперь будет на одно меньше ввиду неоднозначности представления нуля. - Действительно, код имеет численный эквивалент 0, так как и код Связь между значениями цифр прямого кода и цифр обратного кода выводится так же, как и для дополнительного кода, и имеет вид

Рис. 3.6.

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

Функция кодирования в обратном коде запишется для двоичных чисел следующим образом:

Геометрическая интерпретация обратного кода представлена на рис. 3.6.

Пример. Заданы Найти

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

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

Алгебраическое сложение в обратном коде

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

Рассмотрим 4 возможных случая сложения двух чисел при условии

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

Сумма положительна, следовательно, результат должен получиться в прямом коде

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

Пример. Заданы Найти

Сумма отрицательна, значит, результат должен получиться в обратном коде

т. е. результат коррекции не требует.

Пример. Заданы Найти

Во втором и третьем случаях при результат равен , т. е.

Сумма отрицательна» следовательно, результат должен быть получен в обратном коде

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

Пример. Заданы Найти

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

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

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

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

Для упрощения обнаружения переполнения разрядной сетки в ЭВМ используется модифицированный обратный код, функция кодирования которого записывается таким образом:

Признаком переполнения разрядной сетки являются разные цифры в знаковых разрядах суммы.

Примеры. Заданы: а) Найти

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

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

Знаковые разряды участвуют в операциях сложения — вычитания наравне с цифровыми. Предварительный анализ знаковых разрядов операндов не производится, так как при выполнении команды «вычесть» вычитаемое автоматически преобразуется в инверсный код.

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

Categories

1
Оглавление
email@scask.ru