- •302030, Г. Орел, ул. Московская, 65
- •Введение
- •Цель лабораторной работы
- •2 Порядок выполнения работы
- •Методические указания
- •3.1 Системы счисления. Формы и методы представления чисел
- •3.1.1 Системы счисления и кодирования информации
- •3.1.2 Перевод чисел из одной системы счисления в другую
- •3.1.2.1 Перевод чисел с основаниями, являющимися степенью цифры 2
- •3.1.2.2 Перевод целых чисел из одной системы счисления в другую
- •3.1.2.3 Перевод дробных чисел из одной системы счисления в другую
- •3.1.2.4 Перевод чисел из любой системы счисления в десятичную систему
- •3.1.3 Кодирование информации в эвм
- •3.1.4 Формы и форматы представления числовых данных в эвм
- •3.1.4.1 Естественная форма представления числа в памяти эвм
- •3.1.4.2 Нормальная форма представления числа в памяти эвм
- •3.1.5 Особенности представления чисел с плавающей запятой в пэвм
- •3.2 Машинные коды чисел и действия над ними
- •3.2.1 Сущность и назначение машинных кодов
- •3.2.2 Правила образования машинных кодов
- •3.2.3 Действия над машинными кодами чисел
- •3.2.3.1 Действия над числами, представленными в естественной форме
- •3.2.3.2 Действия над числами, представленными в нормальной форме
- •4 Контрольные вопросы
- •Действия над числами, представленными в естественной форме.
- •Действия над числами, представленными в нормальной форме.
- •Список рекомендуемой литературы
- •Приложение а
- •(Справочное)
- •Примеры задач для самостоятельного решения
- •Коды чисел в формате с фиксированной точкой
- •Коды чисел в формате с фиксированной точкой
- •Сложение чисел в формате с фиксированной точкой
- •Сложение чисел в формате с плавающей точкой
- •Приложение б (обязательное) Пример оформления титульного листа отчета по лабораторной работе
- •Приложение в (обязательное) Пример решения лабораторной работы
- •Решение.
3.2.3.2 Действия над числами, представленными в нормальной форме
При алгебраическом сложении чисел, представленных в нормальной форме, необходимо учитывать:
Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.
Сложение кодов чисел производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.
Пусть А = mA · qPA, B = mB · qPB и PA > PB, тогда разность порядков ∆P = PA – PB и 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.
При сложении мантисс с одинаковыми знаками возможно переполнение разрядной сетки, что является признаком нарушения нормализации.
Результаты в прямом коде нормализуются.
действия в сумматоре выполняются только над кодами мантисс, которые поступают из регистров слагаемых в младшие 24 разряда сумматора, знаки мантисс и значения характеристик заносятся в специальные схемы, которые обеспечивают выравнивание характеристик, нормализацию мантиссы результата, формирование знака и характеристики суммы. В старшие разряды (0-7) сумматора вводятся нули.
Алгоритмы операции алгебраического сложения после выравнивания характеристик зависят от знаков слагаемых:
а) если знаки слагаемых одинаковы (положительные или отрицательные), то модули мантисс (прямые коды) суммируются. Переполнение определяется наличием переноса 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 = – A – B.
Решение.
А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 · 16–1 = 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) и сохраняется мантисса в прямом коде.
Ответ.
С1 → 0 1000010 000100000011000000000000
Зн PXC1 mС1
или С1 → 42103000.
Теперь найдем C2 = – A – B.
Так как числа 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 = A – B, C4 = B – A.
Решение.
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 = A – B:
-
+
[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 = B – A.
-
+
[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 = A – B, C2 = B – A.
Решение.
а) Нормализация мантисс и определение характеристик:
mА = 0,81; PXA = 40 + 2 = 42;
mB = 0,73С; PXB = 40 + 2 = 42.
б) Выполнение действий:
Вычислим C1 = A – B:
-
+
[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 = B – A:
-
+
[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 знаков сомножителей или делимого и делителя. Пример решения задачи по переводу числа из одной системы счисления в другую приведен в приложении В.