Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика-Методичка(Лабы).doc
Скачиваний:
8
Добавлен:
02.09.2019
Размер:
522.75 Кб
Скачать

3.2.3.2 Действия над числами, представленными в нормальной форме

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

  1. Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.

  2. Сложение кодов чисел производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.

Пусть А = mA · qPA, B = mB · qPB и PA > PB, тогда разность порядков ∆P = PAPB и PB = PA – ∆P.

C = A + B = mA · qPA + mB · qPB = mA · qPA + mB · qPA-P =

= mA · qPA + mB · q-P · qPA = (mA + m*B) qPA,

где m*B = mB · q-P – мантисса, приведенная к большему порядку путем ее сдвига вправо на ∆P разрядов основания q.

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

  2. Результаты в прямом коде нормализуются.

  3. действия в сумматоре выполняются только над кодами мантисс, которые поступают из регистров слагаемых в младшие 24 разряда сумматора, знаки мантисс и значения характеристик заносятся в специальные схемы, которые обеспечивают выравнивание характеристик, нормализацию мантиссы результата, формирование знака и характеристики суммы. В старшие разряды (0-7) сумматора вводятся нули.

  4. Алгоритмы операции алгебраического сложения после выравнивания характеристик зависят от знаков слагаемых:

а) если знаки слагаемых одинаковы (положительные или отрицательные), то модули мантисс (прямые коды) суммируются. Переполнение определяется наличием переноса 1 из старшего разряда мантиссы в 7-й разряд регистра результата сумматора (в поле характеристики), что вызывает нарушение нормализации мантиссы влево. Нормализация результата производится в регистре сдвигом мантиссы на одну шестнадцатеричную цифру вправо. Старшая тетрада мантиссы при этом заполняется 0001, а характеристика результата сумматора формируется результат операции: из схем анализа знаков и характеристик заносятся в нулевой разряд знак одного из слагаемых, в 1 – 7 разряды – характеристика, а в 8 – 31 разрядах сохраняется мантисса суммы в прямом коде.

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

Нормализация мантиссы суммы производится сдвигом ее влево на одну шестнадцатеричную цифру и уменьшением характеристики на единицу. После этого в регистре сумматора формируется результат: в нулевой разряд заносится знак большего по модулю слагаемого, в 1 – 7 разряды – характеристика и в 8 – 31 разряды – мантисса результата в прямом коде.

Реализацию этих положений рассмотрим на примерах.

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

Пример 2.6. Дано: А = 15 7/8, В = 5/16. Найти C1 = A + B, C2 = – AB.

Решение.

А16 = F,E; B16 = 0,5.

а) Нормализация мантисс и определение характеристик:

mA = 0,FE; PXA = 40 + 1 = 41;

mB = 0,5; PXB = 40 + 0 = 40.

б) Выравнивание характеристик:

P = 41 – 40 = 1; m*B = mB · 16-P = mB · 161 = 0,05.

б) Выполнение действий:

Вычислим сначала C1 = A + B:

[

+

mA]пк = 00’FE0000;

[mB]пк = 00’050000;

PXА = 41

PXB = 41

[mС1]пк = 01’030000;

PXС1 = 41.

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

Нормализация мантиссы:

[mС1]пк = 00’103000; PС1 = 41 + 1 = 42.

Проверка. С1 = 10,3 = 16 3/16; С1 = 15 7/8 + 5/16 = 16 3/16.

В разрядной сетке регистра сумматора формируется результат действия: заносятся знак результата (+), характеристика (42) и сохраняется мантисса в прямом коде.

Ответ.

С10 1000010 000100000011000000000000

Зн PXC1 mС1

или С1 → 42103000.

Теперь найдем C2 = – AB.

Так как числа A и B и результат C2 хранятся в прямом коде, то нет необходимости выполнять двойное преобразование: данных в дополнительный, а результат в прямой коды. Поэтому действие выполняется C2 = – (A + B), т.е. производится сложение прямых кодов мантисс, а результату приписывается знак одного из чисел (минус), т.е. C2 = – С1.

Ответ.

С2 → 1100 0010 0001 0000 0011 0000 0000 0000

или С2 → С2103000.

Пример 2.7. Дано: А = 15 7/8, В = 5/16. Найти C3 = AB, C4 = BA.

Решение.

m*B = 0,05; PXB = 41; [– m*B]доп = 100 – 0,05 = 0, FB; [– m*B]дк = 00’FB0000.

m*А = 0,FB; PXA = 41; [– m*A]дк = 00’020000.

Вычислим сначала C3 = AB:

+

[mA]пк = 00’FE0000;

[–m*B]дк = 00’FB0000;

PXА = 41

PXB = 41

[mС3]дк = 01’F90000 > 0;

PXС3 = 41.

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

Проверка. С3 = F,9 = 15 9/16.

Ответ.

С3 → 0100 0001 1111 1001 0000 0000 0000 0000

или С3 → 41F90000.

Теперь найдем C4 = BA.

+

[m*B]пк = 00’050000;

[–mA]дк = 00’020000;

PXB = 41

PXA = 41

[mС4]дк = 00’070000 < 0;

PXС4 = 41.

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

[mС4]пк = 00’F90000; PXС4 = 41.

Проверка. С4 = – F,9 = – 15 9/16.

Ответ.

С4 → 1100 0001 1111 1001 0000 0000 0000 0000

или С4 → C1F90000.

Пример 2.8. Дано: А = 129, В = 115 3/4. Найти C1 = AB, C2 = BA.

Решение.

а) Нормализация мантисс и определение характеристик:

mА = 0,81; PXA = 40 + 2 = 42;

mB = 0,73С; PXB = 40 + 2 = 42.

б) Выполнение действий:

Вычислим C1 = AB:

+

[mA]пк = 00’810000;

[–m*B]дк = 00’8C4000;

PXА = 42

PXB = 42

[mС1]дк = 01’0D4000 > 0;

PXС1 = 42.

Единица переноса стирается, результат положительный, но произошло нарушение нормализации вправо.

Нормализация мантиссы:

[mС1]пк = 00’D40000; PXС1 = 42 – 1 = 41.

Проверка. С1 = D,4 = 13 1/4.

Ответ.

С1 → 0100 0001 1101 0100 0000 0000 0000 0000

или С3 → 41D40000.

Вычислим C2 = BA:

+

[mB]пк = 00’73C000;

[–m*A]дк = 00’7F0000;

PXА = 42

PXB = 42

[mС2]дк = 00’F2C000 < 0;

PXС2 = 42.

Так как Зн A ≠ Зн B и перенос отсутствует из старшего разряда, то результат отрицательный, представлен в дополнительном коде и должен быть преобразован в прямой код.

[mС2]пк = 00’0D4000; PXС2 = 42.

Старшая тетрада мантиссы равна нулю – нарушение нормализации вправо.

Нормализация мантиссы:

[mС2]пк = 00’D40000; PXС2 = 42 – 1 = 41.

Ответ.

С2 → 1100 0001 1101 0100 0000 0000 0000 0000

или С2 → С1D40000.

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