Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
alg_mul.pdf
Скачиваний:
31
Добавлен:
17.04.2015
Размер:
619.35 Кб
Скачать

 

~

 

 

 

 

 

0.

1

1

1

0

 

Множимое [A]д

 

 

 

 

 

 

0.

1

1

0

1

0

Множитель [B]д

 

bi+1 - bi = bi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~

 

i=0

1 – 0 = 1

0

0

0

0

0

1

1

1

0

 

 

 

 

0 + [A]д b0 = П1

 

 

0

0

0

0

1

1

1

0

0

 

П1 2

 

 

i=1

1 – 1 = 0

 

0

0

0

0

0

0

0

0

0

 

~

 

 

 

[A]дb1

~

 

 

 

0

0

0

0

1

1

1

0

0

 

 

 

 

 

 

П1 2+ [A]дb1= П2

 

 

0

0

0

1

1

1

0

0

0

 

П2 2

 

 

i=2

0 – 1 = -1

 

1

1

1

1

1

0

0

1

0

 

~

 

 

 

[A]д b2

~

 

 

 

0

0

0

1

0

1

0

1

0

 

 

= П3

 

 

 

П2 2+ [A]дb2

 

 

0

0

1

0

1

0

1

0

0

 

П3 2

 

 

i=3

1 – 0 = 1

 

0

0

0

0

0

1

1

1

0

 

~

 

 

 

[A]д b3

~

 

 

 

0

0

1

1

0

0

0

1

0

 

 

= П4

 

 

 

П3 2+[A]д b3

 

 

0

1

1

0

0

0

1

0

0

 

П3 2

 

 

i=4

0 – 1 = -1

 

1

1

1

1

1

0

0

1

0

 

~

 

 

 

[A]д b4

 

 

 

 

0

1

0

1

1

0

1

1

0

 

Произведение

 

Умножение чисел в обратном коде

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

умножение с коррекцией результата в случае отрицательного множителя,

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

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

1.Умножение чисел в обратном коде с коррекцией результата в случае отрицательного множителя [6, 10]

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

Если В 0, то получаем сразу готовое произведение. Если В < 0, то необходимо выполнить коррекцию получаемого псевдопроизведения. Определим поправки, которые необходимо внести для коррекции псевдопроизведения.

Для отрицательного множителя В мы имеем

[B]о = 1. b0 b1… bn = 2 + В – 2-n .

25

Отсюда

В = 0. b0 b1… bn 1 + 2-n

A × B = А (0. b0 b1… bn) – А + А 2-n .

Таким образом, при умножении на цифровую часть отрицательного множителя (0. b0 b1… bn) мы получаем псевдопроизведение А (0. b0 b1… bn). Для по-

лучения правильного произведения необходимо прибавить (– А + А 2-n). При выполнении вычитания обычным образом учитываются алгебраические знаки псевдопроизведения и множимого.

Проиллюстрируем этот метод каждым из четырех ранее рассмотренных способов умножения.

а) Умножение с младших разрядов множителя и сдвигом множимого влево

Выражение (17) является аналитическим представлением данного способа умножения для цифровой части множителя без учета возможной коррекции ре-

зультата:

 

[П]о = [A]о × [B]о = 2-n {[A]о 2n-1 b1+ . . . +[A]о 21 bn-1+ [A]о 20 bn}

(17)

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

Пример 40. [A]о = 1.0001 [B]о = 1.0101

 

 

 

 

 

 

1

0

0

0

1

Множимое [A]

 

 

 

 

 

 

.

0

1

0

1

 

о

 

 

 

 

 

 

Цифровая часть множителя [B]

b4 = 1

 

 

 

 

 

 

 

 

 

 

о

1

1

1

1

1

0

0

0

1

[A]

20 b4

b3 = 0

0

0

0

0

0

0

0

0

0

о

21 b3

[A]

b2 = 1

1

1

1

0

0

0

1

1

1

о

22 b2

[A]

b1 = 0

0

0

0

0

0

0

0

0

0

о

23 b1

[A]

1

 

 

 

 

 

 

 

 

 

о

 

1

1

0

1

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

1

Псевдопроизведение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

 

 

0

1

1

1

0

0

0

0

0

Коррекция [-[A] ]

1

 

 

 

 

 

 

 

 

 

 

о о

0

1

0

0

1

1

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

1

1

0

1

0

Коррекция [A] 2-n

 

 

1

1

1

1

1

0

0

0

1

1

 

 

 

 

 

 

 

 

 

 

о

0

1

0

0

0

1

0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

1

Результат

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

1

1

0

0

[П]о = [A]о × [B]о = 0.10001100

26

Пример 41. [A]о = 0.1110

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

 

 

 

 

 

 

 

 

.

 

0

1

0

1

 

 

b4 = 1

 

 

 

 

 

 

0 0 0 0 0 1 1 1 0

 

 

b3 = 0

0 0 0 0 0 0 0 0 0

 

 

b2 = 1

0 0 0 1 1 1 0 0 0

 

 

b1 = 0

0 0 0 0 0 0 0 0 0

 

 

 

 

0

0

1

0

0

0

1

1

0

 

 

 

1

0

0

0

1

1

1

1

1

 

 

 

 

1

0

1

1

0

0

1

0

1

 

 

 

0

0

0

0

0

1

1

1

0

 

 

 

 

1

0

1

1

1

0

0

1

1

 

 

[П]о = [A]о × [B]о = 1.01110011

 

 

 

 

 

Пример 42. [A]о = 1.0001

 

 

 

 

 

 

 

 

[B]о = 0.1010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

 

 

 

 

 

 

 

 

.

0

1

0

1

b4 = 0

 

 

 

0

0

0

0

0

0 0 0 0

b3 = 1

 

 

 

1

1

1

1

0

0 0 1 1

b2 = 0

 

 

 

0

0

0

0

0

0 0 0 0

b1 = 1

 

 

 

1

1

0

0

0

1 1 1 1

 

1

1

0

1

1

 

1

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

 

1

0

0

1

1

[П]о = [A]о × [B]о = 1.01110011

Множимое [A]о

Цифровая часть множителя [B]о

[A]о 20 b4 [A]о 21 b3

[A]о 22 b2 [A]о 23 b1

Псевдопроизведение Коррекция [-[A]о]о

Коррекция [A]о2-n Результат

Множимое [A]о

Цифровая часть множителя [B]о

[A]о 20 b4 [A]о 21 b3

[A]о 22 b2 [A]о 23 b1

Результат

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

Выражение (18) является аналитической записью данного алгоритма умножения (для цифровой части множителя без учета возможной коррекции результата):

[A]о×[B]о =((…((0 + [A]о bn) 2-1 + [A]о bn-1) 2-1 + … + [A]о b2) 2-1 + [A]о b1) 2-1 (18)

27

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

Пример 43. [A]о = 1.0001 [B]о = 0.1010

 

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

 

 

 

 

 

.

1

0

1

0

 

Цифровая часть множителя [B]о

b4 = 0

0 0 0 0 0 0 0 0 0 0

0 + [А]м

b

4

= П

1

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

0

0

0

0

0

0

0

0

0

0

П1 2-1

 

 

 

 

 

 

b3 = 1

1 1 0 0 0 1 1 1 1 1

[А]ом b3

 

 

 

 

 

 

 

 

1

1

0

0

0

1

1

1

1

1

П

2-1+ [А]м

b

3

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

о

 

2

 

 

1

1

1

0

0

0

1

1

1

1

П2 2-1

 

 

 

 

 

 

b2 = 0

0 0 0 0 0 0 0 0 0 0

[А]ом b2

 

 

 

 

 

 

 

 

1

1

1

0

0

0

1

1

1

1

П

2-1+ [А]м

b

2

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

о

 

3

 

 

1

1

1

1

0

0

0

1

1

1

П3 2-1

 

 

 

 

 

 

b1 = 1

1 1 0 0 0 1 1 1 1 1

[А]ом b1

 

 

 

 

 

 

! → 1 1 0 1 1 1 0 0 1 1 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2-1+ [А]м

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

0

0

1

1

1

П

b

1

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

о

 

4

 

 

1

1

0

1

1

1

0

0

1

1

П 2-1 результат

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

[П]о = [A]до × [B]о = 1.01110011

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

Использование модифицированного обратного кода позволяет его зафиксировать без потери знака. Это переполнение устраняется последующим сдвигом частичного произведения вправо (см. пример 43).

28

Пример 44. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

 

 

 

 

 

 

.

0

1

0

1

 

Цифровая часть множителя [B]о

 

b4 = 1

1 1 0 0 0 1 1 1 1 1

0 + [А]м

b

4

= П

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

1

1

1

0

0

0

1

1

1

1

П

2-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

b3 = 0

0 0 0 0 0 0 0 0 0 0

[А]ом b3

 

 

 

 

 

 

 

 

 

1

1

1

0

0

0

1

1

1

1

П

2-1+ [А]м

b

3

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

о

 

 

2

 

 

1

1

1

1

0

0

0

1

1

1

П2 2-1

 

 

 

 

 

 

 

b2 = 1

1 1 0 0 0 1 1 1 1 1

[А]ом b2

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2-1+ [А]м

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

0

0

1

1

1

П

b

2

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

о

 

 

3

 

 

1

1

0

1

1

1

0

0

1

1

П3 2-1

 

 

 

 

 

 

 

b1 = 0

0 0 0 0 0 0 0 0 0 0

[А]ом b1

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

1

П

2-1+ [А]м

b

1

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

о

 

 

4

 

 

1

1

1

0

1

1

1

0

0

1

П 2-1 псевдопроизведение

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

0

0

1

1

1

0

0

0

0

0

Коррекция [[А]м

]м

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

о

0

0

1

0

0

1

1

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

0

1

1

0

1

0

Коррекция [A]о2-n

 

1

1

1

1

1

1

1

0

0

0

1

 

0

0

1

0

0

0

1

0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

0

0

1

1

0

0

 

 

 

 

 

 

 

[П]о = [A]о × [B]о = 0.10001100

29

Пример 45. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

Множимое [A]о

 

 

 

 

 

 

 

 

 

.

0

1

0

1

 

Цифровая часть множителя [B]о

 

b4 = 1

0 0 1 1 1 0 0 0 0 0

0 + [А]м

b

4

= П

1

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

0

0

0

1

1

1

0

0

0

0

П1 2-1

 

 

 

 

 

 

 

b3 = 0

0 0 0 0 0 0 0 0 0 0

[А]ом b3

 

 

 

 

 

 

 

 

0

0

0

1

1

1

0

0

0

0

П

2-1+ [А]м

b

3

 

 

 

 

 

 

 

 

 

 

 

1

 

 

о

 

 

2

 

0

0

0

0

1

1

1

0

0

0

П2 2-1

 

 

 

 

 

 

 

b2 = 1

0 0 1 1 1 0 0 0 0 0

[А]ом b2

 

 

 

 

 

 

 

 

0

1

0

0

0

1

1

0

0

0

П

2-1+ [А]м

b

2

 

 

 

 

 

 

 

 

 

 

 

2

 

 

о

 

 

3

 

0

0

1

0

0

0

1

1

0

0

П3 2-1

 

 

 

 

 

 

 

b1 = 0

0 0 0 0 0 0 0 0 0 0

[А]ом b1

 

 

 

 

 

 

 

 

0

0

1

0

0

0

1

1

0

0

П

2-1+ [А]м

b

1

 

 

 

 

 

 

 

 

 

 

 

3

 

 

о

 

 

4

 

0

0

0

1

0

0

0

1

1

0

П 2-1 псевдопроизведение

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

1

1

0

0

0

1

1

1

1

1

Коррекция [[А]м

]м

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

о

 

1

1

0

1

1

0

0

1

0

1

Коррекция [A]о2-n

 

 

0

0

0

0

0

0

1

1

1

0

 

 

1

1

0

1

1

1

0

0

1

1

Результат

 

 

 

 

 

 

 

[П]о = [A]до × [B]о = 1.01110011

в) Умножение со старших разрядов множителя и сдвигом множимого вправо

Выполнение умножения по данному способу в обратном коде для цифровой части множителя без учета возможной коррекции результата можно представить выражением (19):

[A]

× [B]

о

= [A] 2-1

b

+ [A]

2-2 b

+ … + [A] 2-n+1 b

n-1

+ [A] 2-n b

n

(19)

о

 

о

1

о

2

о

о

 

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

30

Пример 46. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

 

 

.

0

1

0

1

 

Цифровая часть множителя [B]о

b1 = 0

0

0

0

0

0

0

0

0

0

 

[A]

2-1 b

1

b2 = 1

1

1

1

0

0

0

1

1

1

 

о

2-2

 

 

[A]

b

2

b3 = 0

0

0

0

0

0

0

0

0

0

 

о

2-3

 

 

[A]

b

3

b4 = 1

1

1

1

1

1

0

0

0

1

 

о

2-4

 

 

[A]

b

4

1

 

 

 

 

 

 

 

 

 

 

о

 

 

1

1

0

1

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Псевдопроизведение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

 

 

 

0

1

1

1

0

0

0

0

0

 

Коррекция [-[A]о]о

 

 

0

1

0

0

1

1

0

1

0

 

Коррекция [A]о2-n

1

1

1

1

1

1

0

0

0

1

 

0

1

0

0

0

1

0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

1

1

0

0

 

 

[П]о = [A]о × [B]о = 0.10001100

Пример 47. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

Множимое [A]о

 

 

 

 

 

.

0

1

0

1

 

Цифровая часть множителя [B]о

b1 = 0

0

0

0

0

0

0

0

0

0

 

[A]

2-1

b

1

b2 = 1

0

0

0

1

1

1

0

0

0

 

о

2-2

 

 

[A]

b

2

b3 = 0

0

0

0

0

0

0

0

0

0

 

о

2-3

 

 

[A]

b

3

b4 = 1

0

0

0

0

0

1

1

1

0

 

о

2-4

 

 

[A]

b

4

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

0

0

1

0

0

0

1

1

0

 

Псевдопроизведение

 

1

0

0

0

1

1

1

1

1

 

Коррекция [-[A]о]о

 

1

0

1

1

0

0

1

0

1

 

Коррекция [A]о2-n

 

0

0

0

0

0

1

1

1

0

 

 

1

0

1

1

1

0

0

1

1

 

Результат

 

[П]о = [A]до × [B]о = 1.01110011

31

Пример 48. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 0.1010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

 

 

.

1

0

1

0

 

Цифровая часть множителя [B]о

b1 = 1

1

1

0

0

0

1

1

1

1

 

[A]

2-1

b

1

b2 = 0

0

0

0

0

0

0

0

0

0

 

о

2-2

 

 

[A]

b

2

b3 = 1

1

1

1

1

0

0

0

1

1

 

о

2-3

 

 

[A]

b

3

b4 = 0

0

0

0

0

0

0

0

0

0

 

о

2-4

 

 

[A]

b

4

1

 

 

 

 

 

 

 

 

 

 

о

 

 

1

0

1

1

1

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

0

0

1

1

 

 

[П]о = [A]до × [B]о = 1.01110011

г) Умножение со старших разрядов множителя и сдвигом суммы частичных произведений влево

Аналитическая запись умножения для цифровой части множителя без учета возможной коррекции результата представлена выражением (20):

[A]о×[B]о = 2-n {(…((0+ [A]о b1) 2+1+ [A]о b2) 2+1+…+ [A]о bn-1) 2+1 + [A]о bn} (20)

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

Пример 49. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 0.1010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

Множимое [A]

 

 

 

 

 

 

 

 

.

1

0

1

0

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

Цифровая часть множителя [B]

b1 = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

1

1

1

1

1

0

0

0

1

0 + [A]

b

 

 

 

 

1

1

1

1

0

0

0

1

1

П

2

о

1

 

 

1

 

 

 

 

 

 

 

 

 

b2 = 0

0

0

0

0

0

0

0

0

0

1

 

 

 

 

 

 

 

 

 

[A]

b

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

1

1

1

1

0

0

0

1

1

П

2 + [A]

о

b

2

= П

 

 

1

1

1

0

0

0

1

1

1

1

2

 

 

 

2

 

 

П

 

 

 

 

 

 

 

b3 = 1

1

1

1

1

1

0

0

0

1

2

 

 

 

 

 

 

 

 

 

[A]

b

3

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

П

2 + A] b

 

 

1

0

1

1

1

0

0

1

1

2

 

 

 

о

 

3

 

3

 

 

П

2

 

 

 

 

 

 

 

b4 = 0

0

0

0

0

0

0

0

0

0

3

 

 

 

 

 

 

 

 

 

[A]

b

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

произведение

 

 

1

0

1

1

1

0

0

1

1

П

2+[A] b

4

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

о

 

 

 

 

[П]о = [A]о × [B]о = 1.01110011

32

Пример 50. [A]о = 1.0001

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

 

 

 

 

 

.

0

1

0

1

b1 = 0

0 0 0 0 0 0 0 0 0

 

 

0

0

0

0

0

0

0

0

0

b2 = 1

1 1 1 1 1 0 0 0 1

 

 

1

1

1

1

1

0

0

0

1

 

 

1

1

1

1

0

0

0

1

1

b3 = 0

0 0 0 0 0 0 0 0 0

 

 

1

1

1

1

0

0

0

1

1

 

 

1

1

1

0

0

0

1

1

1

b4 = 1

1 1 1 1 1 0 0 0 1

1

1

1

0

1

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

0

0

1

1

0

1

1

1

0

0

0

0

0

0

1

0

0

1

1

0

0

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

1

1

0

1

0

 

 

1

1

1

1

1

0

0

0

1

1

0

1

0

0

0

1

0

1

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

1

1

0

0

[П]о = [A]о × [B]о = 0.10001100

Множимое [A]о

Цифровая часть множителя [B]о

0 + [A]о b11

П1 2 [A]о b2

П1 2 + [A]о b2 = П2

П2 2 [A]о b3

П2 2 + A]о b33

П3 2 [A]о b4

П3 2+[A]о b4 псевдопроизведение Коррекция [-[A]о]о

Коррекция [A]о2-n

Результат

33

Пример 51. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

Множимое [A]

 

 

 

 

 

 

 

 

.

0

1

0

1

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

Цифровая часть множителя [B]

b1 = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

0

0

0

0

0

0

0

0

0

0 + [A]

b

 

 

 

0

0

0

0

0

0

0

0

0

П

2

о

1

 

 

1

 

 

 

 

 

 

 

 

b2 = 1

0

0

0

0

0

1

1

1

0

1

 

 

 

 

 

 

 

 

 

[A]

b

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

0

0

0

0

0

1

1

1

0

П

2 + [A]

о

b

2

= П

 

0

0

0

0

1

1

1

0

0

1

 

 

 

 

 

2

 

П

2

 

 

 

 

 

 

 

b3 = 0

0

0

0

0

0

0

0

0

0

2

 

 

 

 

 

 

 

 

 

[A]

b

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

0

0

0

0

1

1

1

0

0

П

2 + A] b

 

0

0

0

1

1

1

0

0

0

2

 

 

 

о

 

3

 

3

 

П

2

 

 

 

 

 

 

 

b4 = 1

0

0

0

0

0

1

1

1

0

3

 

 

 

 

 

 

 

 

 

[A]

b

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

0

0

1

0

0

0

1

1

0

П3 2+[A]о b4 псевдопроизведение

 

1

0

0

0

1

1

1

1

1

Коррекция [-[A] ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о о

 

 

1

0

1

1

0

0

1

0

1

Коррекция [A] 2-n

 

0

0

0

0

0

1

1

1

0

 

 

 

 

 

 

 

 

 

 

 

Результат

 

 

 

о

 

 

 

1

0

1

1

1

0

0

1

1

 

 

 

 

 

[П]о = [A]о × [B]о = 1.01110011

2. Умножение чисел в обратном коде с предварительным изменением знаков сомножителей в случае отрицательного множителя [5, 9]

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

3. Умножение чисел в обратном коде с последовательным преобразованием множителя в случае отрицательного множителя [7]

При умножении по данному алгоритму преобразованное значение текущего разряда множителя b̃i зависит от знака множителя (значения разряда b0).

Если знак положительный (b0 = 0), то b̃i = bi. При отрицательном знаке множителя (b0 = 1)

i = 0, если bi = 1;

i = -1, если bi = 0.

Заметим, что в данном алгоритме умножения отсутствуют отдельная операция определения знака произведения. Знак формируется автоматически в процессе умножения, так как множимое А в операции участвуют с учетом знака.

34

Проиллюстрируем этот метод каждым из четырех ранее рассмотренных способов умножения. При этом в примерах ограничимся случаем отрицательного множителя, поскольку реализация умножения на положительный множитель полностью совпадает с аналогичным умножением, изложенным в разделе умножения чисел в обратном коде с коррекцией результата (см. примеры 30, 31, 36, 37).

а) Умножение с младших разрядов множителя и сдвигом множимого влево

Выражение (21) является аналитическим представлением данного способа умножения:

[П]о = [A]о × [B]о = 2-n {[A]о 2n-1 b1̃+ . . . +[A]о 21 bñ-1+ [A]о 20 bñ}

(21)

Если знак положительный (b

0

= 0), то b̃= b

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i i

 

 

 

 

 

 

При отрицательном знаке множителя (b0 = 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

b̃= 0, если b

i

 

= 1;

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b̃= -1, если b

i

= 0.

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

Пример 52. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0

0

0

1

 

Множимое [A]

 

 

 

 

 

 

1

 

0

1

0

1

 

 

 

 

 

о

 

 

 

 

 

 

 

 

Множитель [B]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

b4̃= 0

0

0

0

0

0

 

0

0

0

0

 

[A]

20

 

0

0

0

0

1

 

1

1

0

0

 

 

 

 

о

4

 

3 = -1

 

 

[A]

21

 

0

0

0

0

0

 

0

0

0

0

 

 

 

 

о

3

 

2 = 0

 

 

[A]

22

 

0

0

1

1

1

 

0

0

0

0

 

 

 

 

о

2

 

1 = -1

 

 

[A]

23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

1

 

 

0

1

0

0

0

 

1

1

0

0

 

Результат

 

[П]о = [A]о × [B]о = 0.10001100

 

 

 

Пример 53. [A]о = 0.1110

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

 

 

 

 

 

1

0

1

0

1

4 = 0

0

0

0

0

0

0

0

0

0

3 = -1

1

1

1

1

0

0

0

1

1

2 = 0

0

0

0

0

0

0

0

0

0

1 = -1

1

1

0

0

0

1

1

1

1

1

1

0

1

1

1

0

0

1

0

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

Множимое [A]о

Множитель [B]о

[A]о 20 4 [A]о 21 3 [A]о 22 2 [A]о 23 1

1

0

1

1

1

0

0

1

1

Результат

[П]о = [A]о × [B]о = 1.01110011

35

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

Выражение (22) является аналитической записью данного алгоритма умножения:

[A]о×[B]о =((…((0 + [A]о n) 2-1 + [A]о n-1) 2-1 + … + [A]о 2) 2-1 + [A]о 1) 2-1 (22)

Если знак положительный (b0 = 0), то b̃i = bi. При отрицательном знаке множителя (b0 = 1)

 

 

 

 

 

 

b̃= 0, если b

i

 

= 1;

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b̃= -1, если b

i

= 0.

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

Пример 54. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

Множимое [A]о

 

 

 

 

 

1

0

1

0

1

 

Множитель [B]о

м

 

b̃= 0

0 0 0 0 0 0 0 0 0 0

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 + [А]о b4̃= П1

 

 

0

0

0

0

0

0

0

0

0

0

 

П1 2-1

 

 

b̃= -1

1 1 0 0 0 1 1 1 1 1

 

м

b3̃

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[А]о

 

 

 

1

1

0

0

0

1

1

1

1

1

 

П 2-1+ [А]м

b3̃=П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

о

2

 

 

1

1

1

0

0

0

1

1

1

1

 

П2 2-1

 

 

b̃= 0

0 0 0 0 0 0 0 0 0 0

 

м

b2̃

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[А]о

 

 

 

1

1

1

0

0

0

1

1

1

1

 

П 2-1+ [А]м

b2̃=П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

о

3

 

 

1

1

1

1

0

0

0

1

1

1

 

П3 2-1

 

 

b̃= -1

1 1 0 0 0 1 1 1 1 1

 

м

b1̃

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[А]о

 

1

1

0

1

1

1

0

0

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

П 2-1+ [А]м

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

0

0

1

1

1

 

b1̃=П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

о

4

 

 

1

1

0

1

1

1

0

0

1

1

 

П 2-1

результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

[П]о = [A]до × [B]о = 1.01110011

Пример 55. [A]о = 1.0001 [B]о = 1.0101

36

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

1

0

1

0

1

 

Множитель [B]о

м

 

b̃= 0

0 0 0 0 0 0 0 0 0 0

 

 

4

 

 

 

 

 

 

 

 

 

 

0 + [А]о b4̃= П1

 

 

0

0

0

0

0

0

0

0

0

0

П1 2-1

 

 

b̃= -1

0 0 1 1 1 0 0 0 0 0

м

b3̃

 

3

 

 

 

 

 

 

 

 

 

 

[А]о

 

 

0

0

1

1

1

0

0

0

0

0

П 2-1+ [А]м b3̃=П

 

 

 

 

 

 

 

 

 

 

 

1

о

2

 

0

0

0

1

1

1

0

0

0

0

П2 2-1

 

 

b̃= 0

0 0 0 0 0 0 0 0 0 0

м

b2̃

 

2

 

 

 

 

 

 

 

 

 

 

[А]о

 

 

0

0

0

1

1

1

0

0

0

0

П 2-1+ [А]м b2̃=П

3

 

 

 

 

 

 

 

 

 

 

 

2

о

 

0

0

0

0

1

1

1

0

0

0

П3 2-1

 

 

b̃= -1

0 0 1 1 1 0 0 0 0 0

м

b1̃

 

1

 

 

 

 

 

 

 

 

 

 

[А]о

 

 

0

1

0

0

0

1

1

0

0

0

П 2-1+ [А]м b1̃=П

 

 

 

 

 

 

 

 

 

 

 

3

о

4

 

0

0

1

0

0

0

1

1

0

0

П 2-1

результат

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

[П]о = [A]о × [B]о = 0.10001100

в) Умножение со старших разрядов множителя и сдвигом множимого вправо

Выполнение умножения по данному способу в обратном коде для цифровой части множителя можно представить выражением (23):

[A]о × [B]о = [A]о 2-1 1 + [A]о 2-2 2 + … + [A]о 2-n+1 n-1 + [A]о 2-n n (23)

Если знак положительный (b0 = 0), то b̃i = bi. При отрицательном знаке множителя (b0 = 1)

i = 0, если bi = 1; b̃i = -1, если bi = 0.

Пример 56. [A]о = 1.0001

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

 

Множимое [A]о

 

 

 

 

1

0

1

0

1

 

Множитель [B]о

2-1

 

1 = -1

 

0

0

1

1

1

0

0

0

0

[A]

0

0

0

0

0

0

0

0

0

о

2-2

1

2 = 0

[A]

0

0

0

0

1

1

1

0

0

о

2-3

2

3 = -1

[A]

0

0

0

0

0

0

0

0

0

о

2-4

3

4 = 0

[A]

 

 

 

 

 

 

 

 

 

о

 

4

 

 

0

1

0

0

0

1

1

0

0

Результат

[П]о = [A]о × [B]о = 0.10001100

37

Пример 57. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

0

 

Множимое [A]о

 

 

 

 

 

1

0

1

0

1

 

Множитель [B]о

2-1

 

b1̃= -1

 

1

1

0

0

0

1

1

1

1

[A]

0

0

0

0

0

0

0

0

0

о

2-2

1

2 = 0

[A]

1

1

1

1

0

0

0

1

1

о

2-3

2

3 = -1

[A]

0

0

0

0

0

0

0

0

0

о

2-4

3

4 = 0

[A]

 

 

 

 

 

 

 

 

 

о

 

4

1

 

1

0

1

1

1

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

0

0

1

1

[П]о = [A]до × [B]о = 1.01110011

г) Умножение со старших разрядов множителя и сдвигом суммы частичных произведений влево

Аналитическая запись умножения представлена выражением (24): [A]о×[B]о = 2-n {(…((0+ [A]о 1) 2+1+ [A]о 2) 2+1+…+ [A]о n-1) 2+1 + [A]о n} (24)

Если знак положительный (b0 = 0), то b̃i = bi. При отрицательном знаке множителя (b0 = 1)

i = 0, если bi = 1; b̃i = -1, если bi = 0.

Пример 58. [A]о = 1.0001 [B]о = 1.0101

 

 

 

 

 

1

0

0

0

1

Множимое [A]

 

 

 

 

 

1

0

1

0

1

 

 

 

 

о

 

 

 

 

 

Множитель [B]

 

 

 

 

 

 

 

 

 

0

 

 

 

 

о

1 = -1

0

0

0

0

0

1

1

1

0 + [A]

b̃=П

0

0

0

0

1

1

1

0

0

П

о

1

1

 

2

 

 

 

 

0

0

0

0

0

0

0

0

0

1

 

 

 

 

2 = 0

[A]о b2

 

 

 

 

0

0

0

0

1

1

1

0

0

П

2 + [A]

о

b2̃= П

 

0

0

0

1

1

1

0

0

0

1

 

 

2

 

П

2

 

 

 

 

0

0

0

0

0

1

1

1

0

2

 

 

 

 

3 = -1

[A]о b3

 

 

 

 

0

0

1

0

0

0

1

1

0

П

2 + A] b3̃=П

 

0

1

0

0

0

1

1

0

0

2

 

о

3

 

П

2

 

 

 

 

0

0

0

0

0

0

0

0

0

3

 

 

 

 

4 = 0

[A]о b4

 

 

 

 

0

1

0

0

0

1

1

0

0

П

2+[A] b4̃произведение

 

 

 

 

 

 

 

 

 

 

3

 

о

 

 

[П]о = [A]о × [B]о = 0.10001100

38

Пример 59. [A]о = 0.1110

 

 

 

 

 

 

 

 

 

 

 

 

 

[B]о = 1.0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

Множимое [A]

 

 

 

 

 

 

1

1

0

1

0

 

 

 

 

 

о

 

 

 

 

 

 

Множитель [B]

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

о

1 = -1

1

1

1

1

1

0

0

0

0 + [A] b̃=П

1

1

1

1

0

0

0

1

1

П

 

о

1

1

 

 

2

 

 

 

 

 

0

0

0

0

0

0

0

0

0

1

 

 

 

 

 

2 = 0

[A]

 

 

 

 

 

 

 

 

 

 

 

1

 

о

2

 

 

 

 

 

1

1

1

1

0

0

0

1

П

2 + [A]

о

b2̃= П

 

 

1

1

1

0

0

0

1

1

1

1

 

 

 

2

 

 

П

2

 

 

 

 

 

1

1

1

1

1

0

0

0

1

2

 

 

 

 

 

3 = -1

[A]

 

 

 

 

 

 

 

 

 

 

 

 

 

о

3

 

 

 

1

1

1

0

1

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

1

0

1

1

1

0

0

П

2 + A] b3̃=П

 

 

1

0

1

1

1

0

0

1

1

2

 

 

о

3

 

 

П

2

 

 

 

 

 

0

0

0

0

0

0

0

0

0

3

 

 

 

 

 

4 = 0

[A]

 

 

 

 

 

 

 

 

 

 

 

1

 

о

4

 

b4̃произведение

 

 

1

0

1

1

1

0

0

1

П

2+[A]

 

 

 

 

 

 

 

 

 

 

 

 

3

 

о

 

 

[П]о = [A]о × [B]о = 1.01110011

39

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