Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_OPEVS.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.44 Mб
Скачать
  1. Умножение двоичных чисел со знаком. Умножение чисел в дополнительном коде.

Умножение чисел со знаком может выполняться как в прямом, так и в дополнительном коде. Однако умножение чисел в прямом коде выполняется несколько проще, чем в дополнительном. При умножении чисел в прямом коде перемножаются модули сомножителей А и В, а знак произведения определяется путем сложения по модулю два знаковых разрядов сомножителей и приписывается произведению после завершения перемножения модулей А и В.

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

A = 1111, B = 101, n = 4.

Шаг

Мт

Мн и СЧП

Действие

0

0101

00000000

СЧП0=0

1

0101

00000000

0000

00000000

СЧП0·21

ЧП0 = A·b3

СЧП1 = СЧП0·21+ЧП0

2

0101

00000000

1111

00001111

СЧП1·21

ЧП1 = A·b2

СЧП2 = СЧП1·21+ЧП1

3

0101

00011110

0000

00011110

СЧП2·21

ЧП2 = A·b1

СЧП3 = СЧП2·21+ЧП2

4

0101

00111100

1111

01001011

СЧП3·21

ЧП3 = A·b0

P = СЧП4 = СЧП3·21+ЧП3

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

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

1. Множимое произвольного знака, множитель положительный.

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

2. Множимое произвольного знака, множитель отрицательный.

Так как множитель отрицателен, он записывается в дополнительном коде [В]доп = 2n+1 - [В], и в цифровых разрядах кода будет представлено число 2n - |В|. При типовом умножении (как в случае В ≥ 0) получим

Р’ = А.(2n - |B|) = -|В|.А + А.2n. Псевдопроизведение Р’ больше истинного произведения Р на величину A·2n, что и необходимо учитывать при формировании окончательного результата. Для этого необходимо выполнить коррекцию результата, которая заключается в том, что после последнего сдвига из полученного псевдопроизведения вычитается избыточная величина A·2n.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]