Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
17.03.2016
Размер:
180.22 Кб
Скачать

4.2. Действия над числами, представленными в нормальной форме (c плавающей запятой)

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

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

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

Пусть ,и РА > РB, тогда разность порядков ΔР= РА - РB и РB = РА - ΔР

где – мантисса, приведенная к большему порядку путем ее сдвига вправо на ΔР разрядов основанияm.

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

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

5. Действия в сумматоре выполняются только над кодами мантисс, которые поступают из регистров в младшие 24 (0-23) разряда сумматора (для ЕС и СМ ЭВМ), знаки мантисс и значения порядков заносятся в специальные схемы, которые обеспечивают выравнивание порядков, нормализацию мантиссы результата, формирование знака и порядка суммы. В старшие 8 разрядов (31—24) сумматора записываются нули.

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

а) Если знаки слагаемых одинаковы (положительные или отрицательные), то модули мантисс (прямые коды) суммируются. Переполнение определяется наличием переноса 1 из старшего разряда мантиссы в поле характеристики (в 25-ый разряд сумматора для СМ ЭВМ), что вызывает нарушение нормализации мантиссы влево. Нормализация результата производится сдвигом мантиссы на один бит вправо, при этом порядок результата увеличивается на 1. После этого в регистре результата сумматора формируется результат операции: из схем анализа знаков и порядков заносятся в 31-ый разряд знак одного из слагаемых, в 30-23 разряды — порядок, а в 22—0 разрядах сохраняется мантисса суммы в прямом коде с учетом скрытой единицы.

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

Нормализация мантиссы суммы производится сдвигом ее влево на один биту и уменьшением порядка на единицу. После этого в регистре сумматора формируется результат: в 31-ый разряд заносится знак большего по модулю слагаемого, в 30—23 разряды — порядок и в 22—0 разряды мантисса результата в прямом коде с учетом скрытой единицы.

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

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

Пример 3.21. Дано: . Найти С1 = А + В, С2 = -А - В.

Решение. А = F,Е16; В = 0,516 = 0,01012. Рассмотрим решение применительно к формату обычной точности СМ ЭВМ.

а) Нормализация мантисс (с учетом скрытых единиц) и определение смещенных порядков (характеристик): MA = 0,FD; PхA = 80 + 4 = 84; MB = 0,4; РхB = 80 -1 = 7F.

б) Выравнивание характеристик ΔP = 84-7F=5;

.

в) Выполнение действий (при этом учитывается скрытая единица)

1) C1=A + B

[MA]пр= 00’FE0000; РхA = 84

[M*B]пр= 00’050000; РxB = 84

[MC1]пр= 01’030000; РхC1 = 84

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

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

[MC1]пр = 00’818000; РC1= 84 + 1 = 85

Проверка. =10000,00112

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

Ответ.C1→0 1000010100000011000000000000000

Зн PxC1MC1

или С1 →42818000

2) С2= -А - В

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

Ответ.C2→1 10000101 00000011000000000000000

Зн PxC2MC2

илиС2 →C2818000

Пример 3.22. Дано: . Найти С3 = А - В, С4 = -B - A.

Решение. А = F,Е16; В = 0,516= 0,01012. Опять рассмотрим решение применительно к формату обычной точности СМ ЭВМ.

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

MA = 0,FD; PхA = 80 + 4 = 84;

MB =0,416; РхB = 80 -1 = 7F.

б) Выравнивание характеристик ΔP = 84-7F=5;

.

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

1) C3=A - B

[MA]пр= 00’FE0000; РхA = 84

[-M*B]доп= 1,00 - 0,05=0,FB = 00’FB0000; РxB = 84

[MC3]пр= 00’F90000; РхC1 = 84

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

Проверка. =1111,10012

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

Ответ.C3→0 10000100 11110010000000000000000

Зн PxC3MC3

илиС3→42790000

2) С4= В - A

[M*B]пр= 00’050000; РxB = 84

[-MA]доп= 1,00 - 0,FE=0,02 = 00’020000; РxA= 84

[MC4]доп = 00’070000<0; РхC4 = 84

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

[MC4]пр = 1,00 – 0,07= 0,F9=00’F90000; РхC4 = 84.

Проверка. С4 = -F,9 = -.

Ответ (c учетом скрытой единицы): С4 → 1 10000100 11110010000000000000000

или С4 → С2790000.

Пример 3.23. Дано А = 129, В = . Найти C1 = A – B, C2 = B - A.

Решение. А = 8116, В = 73,С16

Будем выполнять действия применительно к IBM PC.

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

MA = 1,02; PхA = 7F + 7 = 86; c учетом скрытой единицы MA = 0,02

MB = 1,CF; РхB = 7F + 6 = 85, c учетом скрытой единицы MB = 0,CF

б) Выравнивание характеристик ΔP = 86-85=1;

.

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

1) С1 = А - В

[MA]пр= 01’020000; РхA = 86

[-MB]доп= 2,000 - 0,E78=1,188 = 01’188000; РxB = 86

[MC1]доп= 02’1A8000 > 0 РхC1 = 86

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

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

[MC1]доп= 01’A80000 РхC1 = 86 - 4 = 82

Проверка. C1= D,4 = =1101,012

Ответ (c учетом скрытой единицы): C1 → 0 10000010 10101000000000000000000 или C1 = 41540000.

2) С2 = В - А

[M*B]пр= 00’E78000; РxB = 86

[-MA]доп= 2,00 - 1,02 = 00’FE0000; РxA= 86

[MC2]доп = 01’E58000 <0; РхC2 = 86

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

[MC2]пр = 2,000 – 1,E58= 0,1A8 = 00’1A8000; РхC2= 86.

Старший бит мантиссы равно нулю — нарушение нормализации вправо.

Нормализация мантиссы [MC2]пр = 01’А80000; РхC2= 86-4 = 82.

Ответ. С2 → 1 10000010 10101000000000000000000 или С2 = C1540000.

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

Соседние файлы в папке Лекции по информатике