Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ргр / методичка от шафеевой.docx
Скачиваний:
25
Добавлен:
08.06.2023
Размер:
3.88 Mб
Скачать

3.2.3. Ускорение умножения в -кодах

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

Пример.

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

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

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

Сумматор Множитель Операции

Исходное состояние Y = 1 2 2 в счетчике

+

сумматора СМ 0 0 0 0 0

Множимое X=0120 0 1 2 0 0 2 – 1 = 1

+

0 1 2 0 0

0 1 2 0 0 1 – 1 = 0

+

1

0 2 4 0 0

сдвиг 0 0 2 4 0

[X]доп. 9 8 8 0 0 – 2 + 1 = – 1

+

9 9 0 4 0

[X]доп. 9 8 8 0 0 – 1 + 1 = 0

1

9 7 8 4 0

сдвиг 9 9 7 8 4

X = 01200 0 1 2 0 0 1 – 1 = 0

0 0 9 8 4

Произведение = 0 0 9 8 4

Произведение сформировалось в прямом коде, так как имеет место перенос из старшего десятичного разряда.

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

Пример.

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

Сумматор Множитель Операции

Y=82 1 2 2 в счетчике

Исходное

состояние СМ 0000 0000 0000 0000 0000 2–1=1

[01200] 0110 0111 1000 0110 0110

0110 0111 1000 0110 0110

коррекция 1010 1010 1010 1010 1010

[01200] 0000 0001 0010 0000 0000

[01200] 0110 0111 1000 0110 0110 1–1=0

0110 1000 1010 0110 0110

коррекция 1010 1010 1010 1010 1010

1

[02400] 0000 0010 0100 0000 0000

0000 0000 0010 0100 0000

[01200] 1111 1110 1110 0000 0000 2 +1=1

1111 1111 0000 0100 0000

коррекция 1010 1010 0000 0000 0000

[99040] 1001 1001 0000 0100 0000

[01200] 1111 1110 1110 0000 0000 1 +1=0

1001 0111 1110 0100 0000

коррекция 0000 0000 1010 0000 0000

1

[97840] 1001 0111 1000 0100 0000

1001 1001 0111 1000 0100

[01200] 0110 0111 1000 0110 0110 1–1=0

0000 0000 1111 1110 1010

коррекция 0000 0000 1010 1010 1010

0000 0000 1001 1000 0100

Z = 0 0 9 8 4

Соседние файлы в папке ргр