Умножение десятичных чисел в ЭВМ
Умножение десятичных чисел может производится как путем последовательного формирования частичных произведений с помощью введенной в память машины таблицы умножения, так и по способу последовательного сложения множимого с суммой частичных произведений.
Суть процесса последовательного сложения состоит в том, что множимое, сдвинутое соответствующим образом относительно разрядной сетки, суммируется с суммой частичных произведений столько раз, сколько единиц содержится в очередной десятичной цифре множителя, на которую производится умножение. После этого сумма частичных произведений сдвигается вправо на один десятичный разряд и суммируется с множимым столько раз, сколько единиц содержится в очередном разряде множителя и т.д.
Пример.
Вычислить десятичное произведение при , где - множимое, - множитель.
Для простоты и наглядности будем вначале вычислительные операции производить в десятичной системе счисления, а затем - в двоично-десятичной, т.е. в -кодах.
Сумматор Множитель Операции
Исходное состояние Y = 32 в счетчике
сумматора СМ 0 0 0 0
Множимое X=0190 0 1 9 0 2 – 1 = 1
Умножение на 0 1 9 0
младшую цифру 0 1 9 0 1 – 1 = 0
множителя 0 3 8 0
0 0 3 8
Сдвиг суммы частичных 0 1 9 0 3 – 1 = 2
произведений 0 2 2 8
Умножение на старшую 0 1 9 0 2 – 1 = 1
цифру множителя 0 4 1 8
0 1 9 0 1 – 1 = 0
Произведение 0 6 0 8
После очередного прибавления множимого находящаяся в счетчике цифра множителя, на которую производится умножение, уменьшается на единицу. После того как в счетчике окажется нуль, переходят к умножению на следующий по старшинству разряд множителя.
Очевидно, что количество десятичных разрядов произведения не превышает суммарного количества цифр сомножителей. Знак произведения формируется логическим способом так же, как и при действиях с двоичными числами.
Пример.
Рассмотрим теперь реализацию в -кодах представленного выше примера умножения при , используя при этом алгоритмы выполнения операции сложения чисел с одинаковыми и разными знаками.
Исходное Сумматор Множитель Операции
состояние СМ 0000 0000 0000 0000 Y=3 2 в счетчике
[0190] 0110 0111 1111 0110 2-1=1
0110 0111 1111 0110
коррекция 1010 1010 1010 1010
[0190] 0000 0001 1001 0000 1-1=0
[0190] 0110 0111 1111 0110
0110 1001 1000 0110
коррекция 1010 1010 0000 1010
[0380] 0000 0011 1000 0000
0000 0000 0011 1000
[0190] 0110 0111 1111 0110 3-1=2
0110 1000 0010 1110
коррекция 1010 1010 0000 1010
[0228] 0000 0010 0010 1000 2-1=1
[0190] 0110 0111 1111 0110
0110 1010 0001 1110
коррекция 1010 1010 0000 1010
[0418] 0000 0100 0001 1000 1-1=0
[0190] 0110 0111 1111 0110
0110 1100 0000 1110
коррекция 1010 1010 0000 1010
0000 0110 0000 1000
Z = 0 6 0 8
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
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
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
[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
[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
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|