Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции / Лекция 12_13 по ИТ_Сложение чисел с плав. запятой с разн знаками в мод кодах МПК МОК и МДК_2022

.pdf
Скачиваний:
56
Добавлен:
08.12.2022
Размер:
498.17 Кб
Скачать

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 1/11

 

 

 

 

 

12. Сложение чисел с разными знаками с плавающей запятой в модифицированных машинных кодах

Для начала следует учитывать два момента:

1.вычитание – это сложение в дополнительном коде;

2.арифметические операции сложения мантисс можно производить только при одинаковых порядках чисел.

АЛГОРИТМ:

1.Представить условно-графическое изображение регистра для записи,

хранения и т.д. машинных кодов чисел с учетом особенностей его разрядной сетки.

2.Представить исходные числа в двоичной ПСС в форме с плавающей запятой с нормализованной мантиссой (алгебраическая форма)

N=± MN*PN±k

0,12 ≤│M│< 12

3.Перевести алгебраическую форму записи чисел в виде машинного кода

(модифицированного прямого кода – МПК) с учетом особенностей разрядной сетки имеющихся регистров.

Здесь следует учесть:

-что в ячейки для записи величины порядка заносится только степень порядка;

-степень порядка вписывается в соответствующие ячейки по правилу записи целых чисел, а мантисса – по правилу записи дробных чисел.

4.Произвести сравнение порядков кодов чисел.

5.Если порядки чисел оказались разными, то их нужно выровнять. При этом меньший порядок «подтягивают» к большему, т.е. увеличивают,

пропорционально уменьшая при этом мантиссу, сдвигая её вправо.

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 2/11

 

 

 

 

 

6.Преобразовать прямой модифицированный код мантиссы в дополнительный, учитывая, что для положительных чисел МПК=МОК=МДК.

7.Произвести поразрядное сложение МДК мантисс, при этом знаковая часть кода мантисс участвуют в операции сложения и обрабатывается как значащая.

8.Проанализировать результат сложения мантисс сначала на денормализацию слева (разнозначные значения в знаковой части кода мантиссы).

9.При обнаружении денормализации кода мантиссы результата слева нормализовать её путём сдвига кода мантиссы вместе со знаковой частью кода вправо на 1 позицию. При этом в старший знаковый разряд запишется то же значение, что было до сдвига, в младший знаковый запишется значение старшего знакового, а младший знаковый разряд перейдет на позицию старшего значащего разряда,

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

Сдвиг кода мантиссы вправо приводит к её уменьшению,

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

Перевести МДК результата вычислений в МПК и, если требуется,

представить ответ ещё и в алгебраической нормальной форме, а затем и в естественной форме.

10.Если денормализации слева не было обнаружено, то следует перевести МДК мантиссы результата в МПК.

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 3/11

 

 

 

 

 

11.После перевода в МПК проверить результат сложения кодов мантисс на денормализацию справа, т.е. на соответствие условию нормализации

мантисс 0,12 ≤│M│< 12

В МПК показателем денормализации кода мантиссы справа будет «0» в

старшем

значащем

разряде

мантиссы.

Если анализ

результата сложения

кодов мантисс

показал

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

влево опустевшие ячейки справа заполняются нулями.

Сдвиг кода мантиссы вправо приводит к её увеличению,

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

Далее следует, представить МПК всего числа и, если требуется,

представить ответ ещё и в алгебраической нормальной форме, а затем и в естественной форме.

Примечание: следует учитывать, что сразу двух видов денормализации мантиссы не бывает.

Разберем на примерах различные варианты сложения машинных кодов чисел на двоичном сумматоре с учетом особенностей регистров.

Пример 1:

Задание:

Требуется сложить на двоичном сумматоре два положительных числа,

представив их в форме с плавающей запятой и переведя затем в

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 4/11

 

 

 

 

 

модифицированный прямой код. Ответ представить в машинном коде

(МПК) с нормализованной мантиссой, затем в алгебраической нормальной форме в двоичной ПСС и в алгебраической естественной форме в десятичной ПСС.

А = 610

В = 2.510

С: ?

С2 = MC*PCk ? C10 = ?

Ниже приведено условно-графическое изображение 10-ти разрядного регистра для представления модифицированного прямого машинного кода числа в форме с плавающей запятой, разрядная сетка которого состоит из двух знаковых разрядов кода мантиссы числа, двух знаковых разрядов кода степени порядка числа, трёх разрядов кода степени порядка числа и трёх разрядов кода мантиссы числа:

Код знака мантиссы Код знака степени порядка Код степени порядка числа (kPA) Код мантиссы числа (mA)

Выполнение:

А = 610 = 1102 = 0,1102*102112 = 0,7510*210310 = 0,7510*810 = 610 В = 2,510 = 10,12 = 0,1012*102102 = 0,62510*210210 = 0,62510*410 = 2,510

С = 610 + 2,510 = 8,510 ожидаемый результат

Как мы видим условие нормализации мантисс выполняется 0,12 ≤│M│≤ 12

Представим исходные числа А и В в нормальной форме (с плавающей запятой) в виде машинного МПК, и поскольку по условию числа положительные, то при переводе их в модифицированный дополнительный код, мы не выполняем над ними никаких преобразований (для положительных чисел: МПК=МОК=МДК). Далее мы производим вычисления с числами А и В уже в МДК.

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

 

представленными в машинных кодах»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

 

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

 

Курс – 34 акад. часа

Версия 2022 г

 

Кафедра вычислительной техники

 

 

Лист 5/11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МДК А:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

0

0

 

 

0

1

1

 

1

 

1

 

0

 

 

 

 

 

 

 

 

 

МДК В:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

0

0

 

 

0

1

0

 

1

 

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сравнив порядки, мы видим, что порядок числа В 22 меньше порядка числа А

23 на единицу/

PВ < PА на единицу.

Порядки следует выровнять, подтянув меньший к большему, тем самым увеличив порядок. Мантисса при этом должна быть уменьшена на количество разрядов, соотвествующее увеличению порядка, т.е. нужно произвести сдвиг мантиссы вправо, при этом, в данном случае, из младшего знакового разряда перенесется «0» (т.к. число положительное) в старший разряд мантиссы, при этом происходит и сдвиг знака, старший разряд заполняется той же цифрой. Поскольку в данном примере на мантиссу отведено всего три разряда, то вследствие сдвига вправо младший разряд мантиссы «выпадет» за разрядную сетку и не будет учитываться:

Увеличиваем порядок числа В на единицу и получаем:

PA = PB = 310 = 0112

МДК В:

0

0

0

0

0

1

1

0

1

0

 

Как мы видим, произошла потеря точности числа В. Такая потеря точности возникает, когда за разрядную сетку «выпадает» цифра «1», при

«выпадении «0» потери точности не происходит.

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

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 6/11

 

 

 

 

 

Производим сложение кодов мантисс:

МДК МА: 00 110 + МДК МВ: 00 010 МДК МС: 01 000

(получили в ответе положительный ноль в МДК (результат сложения мантисс С: 01 000), причем разнозначный положительный знаковый разряд указывает на переполнение разрядной сетки) – денормализация слева.

В связи с переполнением разрядной сетки производим сдвиг вправо

(уменьшение мантиссы на один порядок), из младшего знакового разряда в старший разряд мантиссы перейдет «1», получим:

мантисса числа С: 00 100

Примечание: при переполнении разрядной сетки нормализация мантиссы не требуется в любом случае, как для положительного числа 01, так и для отрицательного 10, поскольку в случае с положительным числом в старший разряд мантиссы перейдет «1» и мы помним, что для положительного числа МДК=МПК, а в случае с отрицательным числом 10 в старший разряд мантиссы перейдет «0», что для доп. кода является признаком нормализованного числа (из-за инверсии при переходе в МПК).

Для уравновешивания порядок числа С следует увеличить на 1,и тогда получим ответ в машинном коде:

МДК С= МОК С=МПК С: 00 00 100 100

В алгебраической форме:

С = 0,12 * 1021002 = 0,510*2410 = 0,510*1610 = 810

Как мы видим, полученный результат немного отличается от ожидаемого из-за погрешности вычислений в связи с переполнением разрядной сетки,

однако это не является фатальной ошибкой.

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 7/11

 

 

 

 

 

Ответ:

МПК С: 00 00 100 100

С2 = 0,12 * 102

1002

С10

= 810

 

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

Код знака мантиссы

Код знака порядка

Код степени порядка числа (PA)

 

 

Код мантисса числа (МA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МПК А: 00 00 0011 10110

А=102112 * 0,101102 =23*0, 101102

МПК В: 00 00 0100 11011

В=1021002 *0.110112=24*0.110112

Найти МПК С:

С=А+В

 

1.Сравниваем порядки и обнаруживаем, что порядок числа PА < PB на 1.

2.Выравниваем порядки. Мантиссу меньшего числа сдвигаем вправо

(денормализуем):

А= 23 * 0,101102 = 24 * 0,01011(0)2 – (потеря нуля в младшем разряде дробного числа не ведет к потере точности).

Примечание: если мантисса меньшего числа при сдвиге стала нулем, это значит, что меньшее число находится в пределах погрешности вычислений,

т.е. им вообще можно пренебречь.

А+В= 24 * 0, 010112 + 24 * 0,110112 = 24 * (0,110112 + 0,010112)

(Это иллюстрирует то, что при сложении чисел с одинаковыми порядками их порядок просто приписывается результату)

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 8/11

 

 

 

 

 

Хранение порядков в МДК для данного примера не имеет большого значения,

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

этих примерах мы не будем рассматривать как обрабатываются порядки.

Далее складываем мантиссы в модифицированном дополнительном коде, не внося никаких изменений в прямой код, поскольку оба числа – положительные:

МДК МА:

00 11011

МДК МВ:

+ 00 01011

МДК МС:

01 00110

МДК МС= МОК МС= МПК МС Обнаружен факт переполнения разрядной сетки. Сдвигаем мантиссу

результата вправо. К порядку добавляем единицу. Получим:

МПК С: 00 00 0101 10011 → С=25*0,100112

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

Пример 3: Сложение двух положительных чисел с отрицательными порядками заданными в МПК (та же разрядная сетка, что и в предыдущем примере 3). С=А+В

Код знака мантиссы

Код знака порядка

Код степени порядка числа (PA)

 

 

Код мантисса числа (МA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МПК А: 00 11 0011 11001 А= 0.110012*210-310= 0.110012*102-112

А = –3 → 11 0011(МПК SРА) → 11 1101(МДК SРА)

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 9/11

 

 

 

 

 

МДК А: 00 11 1101 11001

МПК В: 00 11 0100 10111 В= 0.101112*210-410=0.101112*102-1002 В = – 4 МПК SРВ :11 0100 → (МДК SРВ :11 1100)

1. Сравниваем порядки чисел А и В. Порядок числа В < порядка числа А,

т.к. -4<-3, поэтому «подтягивать» будем число В к порядку -3,

уменьшая при этом мантиссу, сдвигая ее вправо:

2. Выравниваем порядки чисел А и В. Для этого порядок меньшего числа мы увеличим на единицу (в данном случае), это означает умножение самого числа на 21. Выровняв порядки, мы должны уменьшить мантиссу в 2 раза, т.е. сдвинуть её вправо на 1разряд.

В= 0.101112*2-410=0.01011(1)2*2-310

4.Складываем мантиссы чисел А и В.

МДК МА: 00 11001 + МДК МВ: 00 01011

МДК МС: 01 00100

Результат сложения ожидаемо – число положительное, поэтому:

Налицо, переполнение РС, следовательно необходимо осуществить сдвиг вправо:

МДК МС= МОК МС= МПК МС

С= 0,100102 * 2-210 (в данном случае обошлось без потери точности)

SPC= –2 → МПК SPC: 11 0010 (МДК SPC: 11 1110)

Ответ: МПК С: 00 11 0010 10010 С= 0,100102 * 2

-2

-102

 

= 0,100102 * 102

Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения

 

Лекции

Блок 2: «Аппаратная реализация арифметических операций над числами,

 

представленными в машинных кодах»

 

 

 

 

 

№ 12, 13

Тема 2.7: «Сложение на двоичном сумматоре чисел с разными знаками в

 

 

модифицированных машинных кодах в форме с плавающей запятой»

 

Курс – 34 акад. часа

Версия 2022 г

Кафедра вычислительной техники

Лист 10/11

 

 

 

 

 

Пример 4: Сложение двух чисел с отрицательной и положительной мантиссами и положительными различными порядками в МДК. Ответ представьте в МПК и в алгебраической двоичной форме с плавающей запятой, а затем и в десятичной форме с фиксированной запятой.

Код знака мантиссы

Код знака порядка

Код степени порядка числа (PA)

 

 

Код мантисса числа (МA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

АМДК=11 00 0011 01011

А = –23*0,10101

ВМДК=00 00 0010 11101

В = +22*0,11101

1.СП: 23>22 на 21

2.ВП: SP B = SP A = 310=112 ;

3.Нужно скомпенсировать число B путем уменьшения его мантиссы на один порядок, сдвигая её код (без кода знака) вправо на один разряд: …МПК МВ = МОК МВ = МДК МВ : 00 11101 → 00 01110 (1) –

– потеряли при сдвиге один младший разряд.

4.Итак, МДК В: 00 00 0011 01110

5.СМ: 11 01011

+ 00 01110 11 11001 (МДК) и переводим в прямой код:

11 00110 (МОК) инвертируем МДК

+00 00001 складываем с МПК положительной единицы

11 00111 (МПК) – мантисса денормализована справа

6.НР: сдвигаем значащую часть кода мантиссы влево на два разряда

(знаковую часть мантиссы при этом не трогаем), чтобы в старшем значащем разряде появилась «единица». При таком сдвиге мантисса увеличится в 22 раза, младшие освободившиеся разряды мантиссы заполняем при этом заполняются нулями.