Файл: Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.10.2024

Просмотров: 62

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Пример на выполнение операции деления с восстановлением остатка при использовании дополнительного кода

 

Делимое

IMlnp = 0,01100;

 

 

 

Делитель

1/V3]np = 1,10100;

 

 

 

Знак

частного

- о 0

1 = 1 ;

 

 

 

Частное

1,10011.

 

 

 

 

 

Л-

00,01100

0,10100

 

 

 

 

11,01100

О, 1 0 0

1 1

 

?

■- О

 

 

■ ф

ф I

 

--------------------------------------

11,11000 . . . . 1

 

Восстановление

остатка

+

00,10100

 

 

 

 

<г-

 

100,01101)

 

 

Сдвиг

остатка

-------------- 1

 

 

 

 

00,01100

 

 

 

 

 

 

00,11000

 

 

 

 

 

+

11,01100

 

 

 

 

 

 

100,00100

---------

 

Сдвиг

остатка

 

^

00,01000

 

 

 

 

 

'

11,01100

 

 

 

 

 

 

11,10100

 

 

Восстановление

остатка

 

00,10100

 

 

 

 

 

 

100,01000

 

 

 

 

 

___I

 

 

Сдвиг остатка

 

 

00,01000

 

 

 

 

 

+

00,10000

 

 

 

 

 

11,01100

 

 

 

 

 

,

11,11100

 

 

Восстановление

остатка

^

00,10100

 

 

 

 

 

 

100,10000

 

 

Сдвиг

остатка

 

 

00,10000

 

 

 

 

 

 

01,00000

 

 

 

 

 

+

11,01100

 

 

 

 

 

 

100,01100

 

 

 

 

^-------------- 1

 

 

Сдвиг

остатка

 

 

00,11000

 

 

 

 

 

'

11,01100

 

 

 

 

 

 

100,00100

 

 

42


Пример на выполнение операции деления без восстановления остатка при использовании обратного кода

 

Делимое

[-A’llnp — 0,01 ICO;

 

 

Делитель

[-'Упрг 1,101 ('0;

 

 

Знак частного

 

 

0 Ф 1

= 1

 

 

Частное

->

1,10011

 

 

 

 

 

I

—>■Ш= 1

 

 

 

 

 

 

00,01100

0,10100

 

 

 

 

1 0 0 1 1

 

 

+

 

0,

 

о —0

11,01011

 

 

<

-

11,10111

 

Сдвиг

остатка

 

 

111,01110

 

 

 

 

 

I

1

 

 

 

 

 

11,01111

 

 

 

+

00, 1010"

 

 

 

 

 

100,00011

 

Сдвиг

остатка

 

 

I______

1'

 

 

 

00,00100

 

 

 

 

 

00,01000

 

 

 

+

11,01011

 

Сдвиг

остатка

 

 

11,10011

 

 

 

 

 

111,00110

 

 

 

 

 

11,00111

 

 

 

 

 

00,10100

 

Сдвиг

остатка

 

 

11,11011

 

 

 

 

 

111,10110

 

 

 

 

 

11,10111

 

 

 

+

00,10100

 

 

 

 

 

100,01011

 

 

 

 

 

I

t

 

Сдвиг

остатка

 

 

00,01100

 

 

 

 

 

00,11000

 

 

 

+

11,01011

 

 

 

 

 

100,00011

 

43


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

Цифры частного определяются по знаку остатка: при по­ ложительном остатке разряд частного 1, при отрицательном— 0. Знак частного определяется аналогично знаку произведе­ ния, а именно, суммируются знаковые разряды делимого и де­ лителя по модулю два, и затем результат добавляется к циф­ ровой части частного.

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

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

Сложение и вычитание в машинах с плавающей запятой

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

При представлении в машине чисел с учетом их порядков необходимо до выполнения сложения или вычитания двух

чисел выравнять

их порядки.

второе Nz— 24 •N211'■

Пусть первое

число

N\ = 2p-NlAp, а

Выравнивание порядков

состоит в том,

что число, имеющее

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


дятсн операции сложения пли вычитания, часто отрицатель­ ные порядки представляются в ЗУ машины дополнительными кодами. Для получения разности порядков на сумматор по­ рядков подается порядок р первого числа N, тем кодом, кото­ рый .хранится в ЗУ, затем вычитается порядок 9второго числа No путем суммирования его дополнительного или обратного кода.

Если p>q, то код знака на сумматоре порядков будет О (разность положительна). Этот знак является признаком то­ го, что порядок первого числа больше порядка второго числа и, следовательно, необходимо сдвинуть второе число вправо на количество разрядов, равное этой разности (р— q). После сдвига второе число будет иметь порядок q + (р — q) = р, и можно производить операцию вычитания пли сложения.

Если p<q, то код знака на сумматоре порядков будет 1 (разность отрицательна). Знак разности служит призмаком то­ го, что порядок первого числа меньше порядка второго числа. Для выравнивания порядков первое число необходимо сдви­ нуть вправо па количество разрядов qр, после чего порядки чисел будут одинаковы.

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

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

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

При алгебраическом сложении мантисс результат может оказаться меньше 0,1 ...—"происходит нарушение нормализа­ ции вправо. Полученный результат необходимо нормализо­ вать, сдвигая число на сумматоре чисел на столько разрядов влево, чтобы первая значащая цифра ( 1) заняла старший раз­ ряд. При каждом сдвиге числа .влево значение порядка умень­ шается на единицу. Нормализация результата влево произво­ дится в прямом коде. Если результат отрицательный, то необ­ ходимо предварительно выполнить его преобразование в пря­ мой код.


При осуществлении операции вычитания необходимо ис­ кусственно изменить знак вычитаемого на обратный, что обыч­ но достигается путем предварительной установки в положение «1» знакового разряда второго числа. Тогда при коде знака О положение знаковой ячейки сохранится единичным, при прие­ ме же кода знака 1 значение знакового разряда изменится на нулевое. И уже в соответствии с состоянием ячейки знака формируется код вычитаемого. В остальном операция вычита­ ния не отличается от операции сложения.

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

1) выравнивание порядков;

2) сложение или вычитание мантисс;

3) нормализация результата.

Примеры на выполнение операции сложения

1. Числа записаны в запоминающем устройстве в виде:

Знак порядка

0

0

Порядок

р = 011

О о II

Знак числа

 

Число

0

[Л?,]пр =

0,11 100100

0

[ЛУпр =

0,10010101

а) Выравниваем порядки путем

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

рq. Операцию вычитания заменяем

сложением отрицатель­

ного порядка q в модифицированном

дополнительном коде с

прямым кодом порядка р.

 

00,011 v 11,111

00,010

Так как знак разности положительный, то p>q, и необхо­ димо выполнить сдвиг второго числа вправо на два разряда (0,010), в результате получаем [Л/2]пр = 0,00100101.

б) После выравнивания порядков производится сложение мантисс на сумматоре чисел:

[TVJnp = 0 0 , 1 1 1 0 0 1 0 0

_________[А^п'р =00,00100101______________

[АМп’р + [ л /2]п“ р = 01,00001001 = [/V, + л д ;’р

в) Так как в ячейках знака код 01, то необходимо произ­ вести нормализацию числа путем его сдвига вправо па один разряд и прибавления единицы к порядку суммы (р):

00,011 01,00001001 до нормализации

1 00,10000100 после нормализации

00,100

46