Файл: Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие.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