лекции / Лекция 11 по ИТ_Сложение чисел с разными знаками в мод кодах МПК МОК и МДК_2022
.pdfКурс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения
Блок 2: «Аппаратная реализация арифметических операций над числами,
Лекция № 11 представленными в машинных кодах» Тема 2.6: «Сложение на двоичном сумматоре чисел с разными знаками в
модифицированных машинных кодах в форме с плавающей запятой»
|
Курс – 34 акад. часа Версия 2022 г |
Кафедра вычислительной техники |
Лист 1/4 |
|
|
|
|
11.Модифицированные коды
Апредыдущих лекциях такое понятие, как модифицированные коды уже упоминалось. Давайте теперь подробно разберём что это за коды и для чего они нужны.
Для определения факта переполнения разрядной сетки для чисел в любой форме представления служит модифицированный дополнительный код. Его отличие от обычного дополнительного кода состоит в использовании двух знаковых разрядов для чисел с фиксированной запятой, а
для чисел с плавающей запятой – для знака кода мантиссы и знака кода порядка. Для обозначения положительного числа в знаковом разряде используется код 00, для отрицательного – 11. Поскольку знаковые разряды участвуют в арифметических операциях, в них может быть осуществлен перенос из старшего значащего разряда, при этом индикатором переполнения разрядной сетки будут разнозначные значения в знаковом
разряде. Для положительного числа это будет код 01 в знаковом разряде, а
для отрицательного числа код 10 в знаковом разряде. Отсюда можно заключить что знак определяется по старшему знаковому разряду.
Пусть мы работаем с кодами чисел в форме с плавающей запятой и переполнение возникло в мантиссе результата операции (при алгебраическом сложении чисел). Такая ситуация часто называется денормализацией слева. В
этой ситуации (т.е. при переполнения разрядной сетки) для нормализации мантиссы осуществляется ее сдвиг вправо на один разряд, при этом знаковые разряды рассматриваются как часть кода. В старший знаковый разряд при этом записывается его значение до сдвига. Младший разряд мантиссы теряется. Сдвиг мантиссы вправо на один разряд соответствует ее уменьшению в 2 раза. Поэтому сдвиг должен сопровождаться увеличением
Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения
Блок 2: «Аппаратная реализация арифметических операций над числами,
Лекция № 11 представленными в машинных кодах» Тема 2.6: «Сложение на двоичном сумматоре чисел с разными знаками в
модифицированных машинных кодах в форме с плавающей запятой»
|
Курс – 34 акад. часа Версия 2022 г |
Кафедра вычислительной техники |
Лист 2/4 |
|
|
|
|
порядка на единицу, что соответствует умножению числа на 2 (в двоичной системе).
При обнаружении факта переполнения разрядной сетки для целых чисел, программой выдается ошибка, а переполнение мантисс чисел с плавающей точкой ошибкой не является.
Существует и другой вариант денормализации мантиссы числа с плавающей точкой, так называемая денормализация справа. Это означает,
что мантисса по модулю оказалась меньше 0,510 = 0,12. В прямом или в дополнительном коде для положительных чисел в двоичной системе счисления это приводит к тому, что старший значащий разряд (сразу после запятой, старший разряд мантиссы) равен нулю, а для отрицательного числа в доп. коде он равен 1.
И, как нетрудно догадаться, реально в ЭВМ используется модифицированный дополнительный код (т.е. с двойным знаковым разрядом).
Пример: для целых чисел с фиксированной запятой, представленных в модифицированном коде:
Код знака числа |
|
Код числа |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С = А+В |
С= ? |
МПК С: ? |
|
|
|
|
|
|
|
1) А=1010 |
В= – 610 |
С=410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
МПК В |
1 |
1 |
|
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
МОК В |
1 |
1 |
|
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
+1 |
0 |
0 |
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
МДК В |
1 |
1 |
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения
Блок 2: «Аппаратная реализация арифметических операций над числами,
Лекция № 11 представленными в машинных кодах» Тема 2.6: «Сложение на двоичном сумматоре чисел с разными знаками в
модифицированных машинных кодах в форме с плавающей запятой»
|
Курс – 34 акад. часа Версия 2022 г |
Кафедра вычислительной техники |
Лист 3/4 |
|
|
|
|
|
МПК А = МОК А = МДК А |
0 |
|
0 |
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
МДК В |
1 |
|
1 |
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
МПК С = МОК С = МДК С |
0 |
|
0 |
|
0 |
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
С=410 |
410= 410 Ответ: ПК С: 00 0100 |
|
|
|
|
|
|
1) А= –1010 В= – 710 С= –1710
МПК А |
1 |
1 |
|
|
|
|
|
МОК А |
1 |
1 |
|
|
|
|
|
+1 |
|
0 |
0 |
|
|
|
|
МДК А |
1 |
1 |
|
|
|
|
|
|
|
|
|
МПК В |
1 |
1 |
|
|
|
|
|
МОК В |
1 |
1 |
|
|
|
|
|
+1 |
|
0 |
0 |
|
|
|
|
МДК В |
1 |
1 |
|
|
|
|
|
|
|
|
|
МДК А |
1 |
1 |
|
|
|
|
|
МДК В |
1 |
1 |
|
|
|
|
|
МДК С |
1 |
0 |
|
|
|
|
|
МОК С |
1 |
0 |
|
|
|
|
|
+1 |
|
0 |
0 |
|
|
|
|
МПК С |
1 |
0 |
|
|
|
|
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
0 |
1 |
0 |
1 |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
|
|
|
|
|
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
|
|
|
|
|
|
1 |
0 |
0 |
1 |
|
|
|
|
|
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
0 |
0 |
0 |
0 |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
С= –110 –110≠ – 1710
Ответ: переполнение разрядной сетки, фатальная ошибка в данном случае.
Курс лекций по дисциплине «Информационные технологии» для студентов очной формы обучения
Блок 2: «Аппаратная реализация арифметических операций над числами,
Лекция № 11 представленными в машинных кодах» Тема 2.6: «Сложение на двоичном сумматоре чисел с разными знаками в
модифицированных машинных кодах в форме с плавающей запятой»
|
Курс – 34 акад. часа Версия 2022 г |
Кафедра вычислительной техники |
Лист 4/4 |
|
|
|
|
При сложении чисел в доп. модифицированном коде перенос из «старшего» знакового разряда не учитывается (отбрасывается).
Для целых чисел понятия денормализации нет.
При только лишь использования модифицированного кода проблему переполнения разрядной сетки не решить, в любом случае, при сложении чисел с фиксированной запятой, ошибка будет фатальной.
Проблему в данном случае может решить только использование чисел с плавающей запятой.