Page 34 - ЭВМ
P. 34
×
2. Второй случай – x ≥ 0, y < 0. Имеем z = х y = |x| ×( 2 n+1 – |y|) =
= 2 n+1 |x| – |x| × |y| – неправильный результат, обозначим его как а. Пра-
вильный результат должен быть z = 2 2(n+1) – |x|×|y|, обозначим его как в.
Поэтому необходимо скорректировать результат, для чего надо из в
– |x|), что является
вычесть а, тогда а – в = 2 2(n+1) – 2 n+1 |x| = 2 n+1 × (2 n+1
дополнительным кодом множимого x, сдвинутым на (n+1) разрядов
влево, обозначим его как с. Чтобы получить правильный результат,
надо к результату а прибавить коррекцию с.
Например:
= 7 0111
=-3 0111
= - 0111
21
00111
000111
+
0111
100011
+ 0100011
0111
1011011
01011011
+
коррекция 1001 (дополнительный код 7)
1110101 результат (-21) в дополнительном коде
1
3. Третий случай – x < 0, y > 0. Аналогично второму случаю имеем:
z = х y = (2 n+1 – |x|) × |y| = 2 |y| × |x| × |y|.
×
n+1
Получили неправильный результат. Чтобы получить правиль-
ный результат z = 2 2(n+1) – |x| × |y|, надо к полученному результату
n+1
прибавить коррекцию: 2 n+1 × (2 – |y|) – дополнительный код множи-
теля y, сдвинутый на (n+1) разрядов влево.
4. Четвертый случай – x < 0, y < 0. По определению дополни-
тельного кода имеем следующее:
z =× = (2 n+1 n+1 2(n+1) – 2 n+1 |y| – 2 n+1 |x| + |x|×|y|.
– |y|) = 2
– |x|) × (2
х y
Получили неправильный результат а, должно быть z = |x|×|y|.
Правильный результат будет получен, если к а прибавить
дополнительный код множимого и множителя, сдвинутый на (n+1)
разрядов влево.
34