166805 (740530), страница 5
Текст из файла (страница 5)
ПРИМЕР. Используя дополнительный код, сложить два числа:
[
X1]пр = 0 101; 1,10101 и [X2]пр = 0 100 ; 1,11001
порядок мантисса
РЕШЕНИЕ:
-
[X2]пр = 0 101; 1,011001
-
[m1]мод = 11,01011; [m1]мод = 11,100111.
доп доп
-
[m1]мод = 11,01011
-
доп
[m2]мод = 11,01011
доп
[m3]мод = 110, 111101
доп
отбрасывается запрещенная комбинация
4. Комбинация знаковых цифр мантиссы показывает, что сумма денормализована влево (всегда только на один разряд)
Произведем нормализацию суммы вправо
[m3]мод = 10, 111101 1,0111101
доп
Робщ = 0,101 + 0,001 = 0,110
Далее переводим сумму в прямой код и производим округление ее мантиссы до пяти разрядов.
О
твет: [X3]пр = 0 110 ; 1,1000011 ~ 0 100; 1, 10001
порядок мантисса
Умножение чисел с фиксированной запятой
Наиболее просто умножение выполняется в прямом коде, независимо от того, являются ли операнды целыми или дробными числами. В машинах с фиксированной запятой оно реализуется в два этапа.
1. Определяется знак произведения с помощью сложения знаковых цифр сомножителей по модулю два, где нуль соответствует плюсу, а единица - минусу:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
Вручную это эквивалентно:
(+) (+) = (+); (+) (-) = (-); (-) (+) = (-); (-) (-) = (+).
2. Производиться перемножение модулей сомножителей, затем в случае необходимости округление полученного модуля произведения, после чего к модулю результата приписывается его знак, определенный на первом этапе.
Умножение производится по обычным правилам арифметики согласно двоичной таблицы умножения. Произведение модулей |Х3| = |Х1| * |Х2| двух (например дробных) чисел, где множитель Х2 = Х21 2-1 + Х22 2-2 +…+ Х2n 2-n, чаще всего вычисляется как сумма так называемых частичных произведений:
n
/Х3/ = /Х/ Х2i 2-i
i=1
В машинах может быть реализовано как умножение, начинающееся с младшей цифры множителя (наиболее привычный способ), так и умножение, начинающееся со старшей цифры множителя. При умножении вручную в первом случае частичные произведения сдвигаются влево, во втором - вправо.
ПРИМЕР. Перемножить числа [X1]пр = 0,1010 и [X2]пр = 1,1101
Решение.
1. Определяем знак произведения 0 + 1 = 1.
2. Перемножим модули операндов, порядок перемножения определяется нумерацией цифр множителя:
1-й способ
0,1010 0,1010
х 0,1101 х 0,1101
4,3,2,1 номера цифр множителя 1,2,3,4
1010 1010
0000 1010
+1010 + 0000
1010 1010
0,10000010 0,10000010
После округления приписываем к модулю знак произведения, полученный на первом этапе умножения.
О твет: [X3]пр = 1,0000010 ~ 1,10000.
Первый способ часто называют умножением младшими разрядами вперед, а второй - умножением старшими разрядами вперед.
Умножение чисел с плавающей запятой
Если имеем два сомножителя, заданные в нормальной форме Х1 = m1 10p1 и Х2 = m2 10p2, то их произведение определяется следующим образом:
Х1 Х2 = m1 m2 10p1+р2.
Анализ этого соотношения показывает, что умножение чисел в машинах с плавающей запятой производится в четыре этапа:
1. Определение знака произведения путем сложения по модулю два знаковых цифр мантисс сомножителей.
2. Перемножение модулей мантисс сомножителей по правилам для дробных чисел с фиксированной запятой.
3. Определение порядка произведения путем алгебраического сложения порядков сомножителей с использованием либо дополнительного, либо обратного модифицированного кода.
4. Нормализация результата и округление мантиссы в случае необходимости. Поскольку сомножители обязательно являются нормализованными числами, то де нормализация произведения возможна только на разряд и только вправо.
ПРИМЕР. Перемножить числа с плавающей запятой.
Множимое [X1]пр = 0 101; 1,10101
Множитель [X2]пр = 0 100; 1,11001
Решение.
1. Знак произведения 1 + 0 = 1.
2. Перемножаем модули мантисс:
1-й шаг ,0000 0000 - нулевая сумма
+,0000 1010 - 1-е частичное произведение
2-й шаг ,0000 1010 - 2-я сумма
+ ,0000 0000 - 2-е частичное произведение
3-й шаг ,0000 1010 - 3-я сумма
+ ,0010 1000 - 3-е частичное произведение
4-й шаг ,0011 0010 - 4-я сумма
+ ,0101 0000 - 4-е частичное произведение
, 1000 0010 - модуль произведения мантисс.
Находим порядок произведения:
[р1]мод = 00,101
-
доп
[р2]мод = 11,101
доп
[р3]мод = 100, 010
доп
теряется
Производим округление мантиссы произведения.
О
твет: [X3]пр = [Х1 Х2]пр = 0 010 ; 1 100
порядок мантисса
Прямой, обратный и дополнительный коды. Модифицированный код.
В ведем определение прямого, обратного и дополнительного кодов. Рассмотрим двоичное число
В соответствии с изложенным выше число R кодируется следующим образом:
и ли, в более общем случае, если
,
Так как , эти соотношения можно переписать таким образом:
Представление чисел в соответствии с данной формулой называется прямым кодом числа
Е сли
, то формула
перепишется в таком виде:
Аналогичным образом кодируются и числа, модуль которых не меньше единицы.
Пример: Записать числа в прямом коде:
Из равенства
следует, что операцию вычитания y из x можно заменить операцией сложения S-y и х с последующим вычитанием из результата величины S.
Введем запись
Представление чисел в соответствии с называется дополнительным кодом числа R.
Операцию вычитания можно заменить операцией сложения и на основе соотношения
Код, определенный с помощью соотношения
называется обратным кодом числа R.
Отметим, что при S=2 для получения обратного кода отрицательного числа в знаковый разряд нужно записать единицу, а каждую цифру в записи числа заменить на ее дополнение до S-1, т. е. единицу заменить на нуль, а нуль на единицу.
Пример: Записать числа в обратном коде:
Пример: Записать числа в дополнительном коле:
Из приведенных примеров следует, что положительные числа в прямом, обратном и дополнительном кодах совпадают. В прямом и обратном коде нуль имеет два представления – «положительный» и «отрицательный» нуль. В дополнительном коде нуль имеет только одно, «положительное», представление.
Отметим, что при представлении с плавающей запятой отдельно кодируется мантисса и порядок числа. При этом возможно представление мантисс и порядков чисел в одном и том же или разных кодах. Например, порядок числа может быть представлен в прямом, а мантисса – в дополнительном кодах и т. п.
Таким образом, используя обратный и дополнительный коды, операцию алгебраического сложения можно свести к арифметическому сложению кодов чисел, которое распространяется и на разряды знаков, которые рассматриваются как разряды целой части числа.
Рассмотрим сначала использование обратного кода для алгебраического сложения n – разрядных двоичных чисел R и Q , когда оба они или одно из них отрицательно. Будем считать, что модуль их алгебраической суммы меньше единицы и единица переноса из разряда знака прибавляется к младшему разряду получившейся суммы.
Пусть, например, ( обозначим
) и
( обозначим
).Считаем, - 1
0. Тогда в соответствии с
можно записать
В связи с тем, что возникает перенос из знакового разряда, одна двойка пропадает и добавляется единица переноса к младшему разряду суммы :
Таким образом, сложение с переносом единицы знакового разряда двух отрицательных чисел в обратном коде дает обратный код их алгебраической суммы.
Рассмотрим алгебраическую сумму чисел ( обозначим
) и
. Можем записать
Если , то
и возникает перенос из разряда знака. В этом случае имеем
Если же ,то
и переноса не возникает; получаем
Мы получили, что сложение чисел с использованием обратных кодов с циклическим переносом приводит к получению алгебраической суммы в прямом коде, если сумма положительна, и в обратном коде, если сумма отрицательна.
Аналогично при использовании дополнительных кодов алгебраическое сложение их, включая разряды знаков, которые рассматриваются как разряды целых единиц, дает, если единица переноса из разряда отбрасывается, следующий результат: если алгебраическая сумма положительна, то результат получается в прямом коде, и в дополнительном коде, если она отрицательна.
Таким образом, применение обратного и дополнительного кодов дает возможность операцию алгебраического сложения свести к операции арифметического сложения. Однако нами рассмотрен случай, когда модуль полученной суммы меньше единицы. В общем случае при сложении двух чисел, модуль которых меньше единицы, модуль суммы может оказаться больше или равен единице ( так называемое переполнение разрядной сетки мантиссы ).
Для обнаружения такого переполнения, учитывая, что модуль суммы двух таких чисел меньше двух, используют один дополнительный разряд. Код ( прямой, дополнительный, обратный ), в котором имеется такой дополнительный разряд, называется модифицированным. В модифицированных кодах этот разряд используется для дублирования знака числа, т. е. знак «плюс» обозначается 00, а «минус» - 11. Правила переноса из разрядов знака остаются прежними в зависимости от того, в каком коде ( обратном или дополнительном ) представлены числа. На переполнение же разрядной сетки, т. е. что модуль суммы , указывает несовпадение цифр в знаковых разрядах. В этом случае комбинации 01 соответствует положительное, а 10 – отрицательное число.