Научная статья на тему 'Вместо деления - умножение'

Вместо деления - умножение Текст научной статьи по специальности «Математика»

CC BY
1567
158
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Столяр Владимир Гершевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

MULTIPLICATION INSTEAD OF DIVISION

A method of division of integers is introduced. It uses multiplication in a form of addition with a shift of digits. The method is compared with the conventional method of division the binary-coded numbers on the hardware level. As a result it is possible to increase the processing speed of computer.

Текст научной работы на тему «Вместо деления - умножение»

2007

НАУЧНЫЙ ВЕСТНИК МГТУ ГА серия Математика и физика

№ 114

УДК 511, 681.3(075.8)

ВМЕСТО ДЕЛЕНИЯ - УМНОЖЕНИЕ

В. Г. СТОЛЯР

Статья представлена доктором технических наук, профессором Самохиным А.В.

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

Обычный способ деления одного целого числа на другое, как известно, предполагает операцию подбора цифр частного. При этом процесс деления, в зависимости от знаменателя, либо заканчивается (когда остаток равен нулю), либо продолжается бесконечно с периодически повторяющейся группой цифр в десятичной записи частного.

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

Сначала докажем теорему.

Теорема.

Всякое рациональное число вида ї / к, где ї и к - натуральные (ї, к є Ы), может быть представлено в виде бесконечно убывающей геометрической прогрессии с положительными членами, у которой первый член Ь1 = ї /р, а знаменатель д = г /р, где р > к, р є N и г = р - к, т.е. число г являетсяр-дополнение числа к. Так как г < р, то: 0 < д < 1.

Доказательство.

1. Докажем сначала необходимое условие для t = 1.

Положим, что сумма членов бесконечно убывающей геометрической прогрессии равна рациональному числу S = 1 / к Тогда по известной формуле для суммы членов геометрической прогрессии S = Ьі/(1 - д) запишем:

1 Ь

- =--------, (1)

к 1 - д

откуда д = 1 - кЬ1 и 0 < 1 - кЬ1 < 1.

Преобразуя это неравенство (умножим все члены неравенства на -1, прибавим 1 и разделим на к), получим:

1

0 < Ь < — . (2)

к

Представим Ь1 в виде правильной дроби с числителем, равным 1, и натуральным знаменателем:

1

Ь1 = -- . (3)

р

Тогда из неравенства (2) следует:

1 1

— < — или р > к. р к

Пусть р = к + г . (4)

Назовём число г р-дополнением числа к.

Мы можем теперь определить знаменатель прогрессии д. Для этого подставим (3) в (1) с учётом (4).

Получим

1 1

откуда:

или в других обозначениях

к (к + г) (1 - я)

к + г

(5)

Я ;

(6)

р

Таким образом, каждую правильную дробь вида 1 / к можно представить бесконечным числом бесконечно убывающих геометрических прогрессий с первым членом Ь1 = 1 / рг, где рг > к, т.е. р1 = к + 1, р2 = к + 2, р3 = к + 3, ... , рг = к + г, ... , и со знаменателем я = г / рг.

В общем виде

2

3

1 1 г г г

----=-------+--------+--------+-------+

к рг р2г р3г р4г

(7)

2. Для доказательства достаточного условия построим бесконечно убывающую геометрическую прогрессию с Ь1 = 1 / р и я = г / р, где р > к, р е N и г = р - к.

Тогда сумма членов этой прогрессии равна

S =

или

Ь 1 р 1

г

1 - я р(1 ) р (р - г) к

р

1 г г2 г3 1

і = — + — + — + — + = —

23 р р р р4 к

Очевидно таких прогрессий при р > к бесконечное множество.

Переходим к общему случаю. Пусть требуется разделить число t на число к, оба натураль-

ные.

Умножим обе части (7) на t. Получим

t t № її2 її3

---- = ------ + ------- +---------+ --------- +

к рг р2г р3г р4г

г

Я

г

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

Отсюда, всякая дробь X / к, где X и к - натуральные, может быть представлена бесконечным числом бесконечно убывающих геометрических прогрессий с Ь1 = X / р и я = г / р, где р > к и г является р-дополнением знаменателя к. Теорема доказана.

В качестве примера представим дробь 1 / 7 в виде бесконечно убывающей геометрической прогрессии (таких прогрессий, очевидно, бесконечное множество):

1 1 1 1

Для г = 1: — = — + — +------+ ...

7 8 64 512

1 1 2 4

Для г = 2: — = — + — +------------+ ...

7 9 81 729

1 1 3 9

Для г = 3: — = — +-----+--+ ...

7 10 100 1000

1 1 4 16

Для г = 4: — = — +-----+--+ ...

7 11 121 1331

и т. д.

В привычной для нас десятичной системе счисления прогрессия для г = 3, у которой Ь1 = 1 / 10 и я = 3 / 10, позволяет представить дробь в виде суммы степеней числа 3 (десятичное дополнение знаменателя дроби), расположенных столбиком со сдвигом соответствующих разрядов на один вправо

0,1 1 0,03 или проще 3

0,009 и, наверное, 9

0,0027 красивее: 27

0,00081 81

0,000243 243

0,0000729 729

0,00002187 2187

0,000006561 6561

0,0000019683 19683

0,00000059049 59049

0,000000177147 177147

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

0,0000000531441 531441

0,1428571200811.......................... 0,1428571200811

При количестве слагаемых, равном 13, мы получили результат 0,142857 с точностью 10 . Точность результата тем больше, чем больше взято членов геометрической прогрессии в качестве слагаемых.

14

42

126

378

1134

3402

10206

30618

91854

275562

826686

2480058

7440174

Если требуется, например, разделить 14 на 7, воспользуемся вновь удобной прогрессией со знаменателем 3 14 14 14-3 14-9

Я = — . Получим:-----=-----+------+------+ ...

10 7 10 100 1000

1,9999996811354

То же самое запишем столбиком, сдвигая результаты последовательного умножения на число 3 на один разряд вправо. Здесь при 13 слагаемых мы получили результат 2,0 с точностью 10-6.

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

числа X на к столбиком со смещением каждого следующего слагаемого (члена прогрессии) на т разрядов вправо.

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

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

Известно, что для геометрической прогрессии

1 - яп

§1 = Ь-------

1 - я

Следовательно, для нашего общего случая (для дроби X / к)

X 1 - гп / (к + г)п X [(к + г)п - гп]

§п =----- • -------------= — • --------------.

к + г 1 - г / (к + г) к (к + г)п X X [(к + г)п - гп] X гп

---------------------] = — •-------------------

Находим разность Яп =--------Бп = — [1------------------------

к к (к + г)п

X

Или Яп = — • яп .

к

к (к + г)п

(9)

Пусть Яп < 10 \ где 1 - показатель отрицательной степени точности результата сложения.

X гп

Тогда — •--------< 10-1.

к (к + г)п

10-1 • X • г"

———— < 1.

Или ————

к (к + г)п

Прологарифмируем неравенство (10) по основанию 10

1 + 1§ X + п 1§ г - 1§ к - п 1§ (к + г) < 0.

Отсюда п [1§ (к + г) - 1§ г] > 1 + 1Б X - 1Б к.

Откуда

п >

(11)

Здесь

1§ (к + г) - ^ г 1§ (к + г) = ^ р = ^ 10т = т.

Так для дроби 1 / 7 задаём 1 = 7. Здесь X = 1, к = 7, г = 3, т = 1.

7 - 1§ 7

7 - 0,5451

6,4549

п >

п >

п >

, или п > 12,3.

1 - 1§ 3

1 - 0,4771

0,5229

Можно принять п > 12.

Действительно, просуммировав столбиком первые 13 слагаемых для прогрессии (7), мы для

1 / 7 получим: 0,1428571200811 с точностью 10-7.

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

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

Известно [2, с.74-107], что в компьютере операция деления состоит из нескольких этапов (шагов), число которых, а следовательно, и продолжительность операции, определяется заданным числом разрядов частного. Каждый шаг представляет собой последовательность определённых действий, включающих, в зависимости от принятого алгоритма (с восстановлением остатка или без его восстановления), следующие: вычитание или прибавление делителя, восстановление остатка, сдвиг остатка. Кроме того, обязательным является оценка каждой цифры частного (0 или 1) для определения действия на следующем шаге, что требует так же определённых аппаратных затрат.

Ниже представлены первые результаты сравнительного анализа использования предлагаемого способа деления через умножение на аппаратном уровне в компьютере по отношению к принятому в настоящее время способу деления чисел с фиксированной точкой без восстановления остатка [2, с.90].

Способ деления, используемый в компьютере, обозначим К-метод. Предлагаемый в статье способ - 8-метод. Сравнение проводится для процесса деления числа +145 на -13 до получения в частном семи разрядов. Процесс деления при К-методе показан на рис. 1.

Доведение этого процесса деления до получения семи разрядов в частном, как оказалось, потребовало использования 8 шагов по два действия в каждом - сдвиг и сложение. Итого 16 действий.

Способ деления числа 145 на 13 в двоичной системе по 8-методу (через умножение на г10 = 16 - 13 = 3, т.е. на г2 = 10000 - 1101 = 11) до получения семи разрядов в частном показан на рис.

2. Поскольку для нашего анализа важен сам принцип деления по 8-методу, знак делителя берём положительным.

Таким образом, для данного частного случая деление 145 на 13 в двоичной системе сведено к пошаговому умножению числа 10010001 на 11 со сдвигом промежуточных произведений на каждом шаге на 4 разряда вправо (так как здесь р = 10000) и их сложению; при этом для получения в частном (здесь: в итоговой сумме) семи разрядов использовано 3 шага по четыре действия в каждом. Итого 12 действий.

К-метод

Делимое А10= +145 00 1001 0001 1101 Делитель В10 = -13

Вычитание делителя + 11 0011 1011 ,001 В2 = 1101

Остаток < 0 = 11 1100 0001 тттт ттт

Сдвиг остатка влево 11 1000 001 | | | |

Прибавление делителя + 00 1101 001 | | | |

Остаток > 0 = 00 0101 001 _Т | | |

Сдвиг остатка влево 00 1010 01 | | |

Вычитание делителя + 11 0011 | | |

Остаток < 0 = 11 1101 01 __Т | |

Сдвиг остатка влево 11 1010 1 | |

Прибавление делителя + 00 1101 | |

Остаток > 0 = 00 0111 1 т |

Сдвиг остатка влево 00 1111 |

Вычитание делителя + 11 0011 |

Остаток > 0 = 00 0010 т |

Сдвиг остатка влево 00 010 |

Вычитание делителя + 11 0011 |

Остаток < 0 11 0111 _т |

Сдвиг остатка влево 10 111 |

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Прибавление делителя + 00 1101 |

Остаток < 0 11 011 _т |

Сдвиг остатка влево 10 111 |

Вычитание делителя + 00 1101 |

Остаток > 0 00 0011 т

Рис. 1. Деление числа 145 на -13 по К-методу

8-метод

У множение на 310 = 112 Сложение со сдвигом на 4 разряда

10010001 10010001

х 11

10010001

+ +

10010001

110110011 110110011

х +

11

110110011

+ +

110110011

10100011001 10100011001

х 11

10100011001

+ +

10100011001

111101001011 111101001011

10110010001111011011

Рис. 2. Деление числа 145 на 13 по Б-методу

Важно отметить, что поскольку цифры дополнительного множителя могут принимать только значения 0 и 1, то показанный на рис. 2 процесс деления-умножения по 8-методу фактически представляет собой процедуру, состоящую из двух параллельных ветвей пошагового сложения с соответствующими сдвигами.

Как следует из приведенного примера, число шагов (действий) в 8-методе зависит от числа единиц в дополнительном множителе (или количества частичных произведений П в каждом шаге). Можно подсчитать относительную эффективность Е для 8-метода по сравнению с К-методом по формуле:

1к - и

Е8 =--------------------------------------------• 100 (%) , (12)

где 1к — количество действий при делении по К-методу, 18 — по 8-методу. Тогда при делении на 13 получим

16 - 12

Е8 =-----------• 100 (%) = 25 %.

16

По аналогии с приведённым примером был проведён сравнительный анализ числа шагов (действий) при делении числа 145 на другие числа из интервала от 23 до 24, исходя из неизменности числа шагов по К-методу для получения тех же семи разрядов в частном.

При делении 145 на 9 (т.е. при умножении числа 100100012 на 1112, где 1112 = 100002 -10012), что является самым трудоёмким процессом на интервала делителей от 9 до 15, потребуется соответственно 3 шага по два действия (сложение и сдвиг) для каждой единицы множителя, т.е. всего 18 шагов. Соответственно

16 - 18

Е8 =------------• 100 (%) = -12,5 %.

16

В остальных же случаях, т.е. при делении на 10, 11, 12, 13, 14, 15 эффект при 8-методе положительный. Результаты этого анализа приведены в табл. 1.

Таблица 1

Расчёт эффективности Б-метода на интервале делителей от 9 до

В10 9 10 11 12 13 14 15

В2 1001 1010 1011 1100 1101 1110 1111

Г2 111 110 101 100 11 10 1

П 3 2 2 1 2 1 1

1к 16 16 16 16 16 16 16

и 18 12 12 6 12 6 6

е8 (%) -12,5 +25 +25 +62,5 +25 +62,5 +62,5

5

Для анализа эффективности 8-метода при делении на числа следующих после рассмотренного интервала (на числа от 2п до 2П+1 для п = 4, 5, ...) было введено понятие среднего числа частичных произведений Пср (отношение суммарного числа единиц в записи всех чисел данного интервала в двоичной системе счисления к длине интервала) на интервалах от 2п до 2п+1. С учётом закономерности преобразования числа из десятичной системы в двоичную была выведена формула Пср для 8-метода

2п-1 п + 1

ПБср(п) =-------------

2п

или n 1

nscp(n) = + . (13)

2 2n

В целях наглядности на рис. 3 приводится соответствующая табл. 1 диаграмма эффективности S-метода относительно К-метода деления на числа рассматриваемого интервала.

Эффект (%)

62,5 ----------------------------------f- ____ ....

60 ! ! |

50

40

30

25

20

10

9

10

11

12

13

14

15

делитель

(111) (110) (101) (100) (11)

(10)

(1)

8

r

-10

-12,5

Рис. 3. Диаграмма сравнительной эффективности операции деления 145 на 9, 10, 11, 12,

13, 14, 15 по 8-методу относительно К-метода (на аппаратном уровне)

Аналогичный параметр для К-метода

(п + 2)-2п-1

ПКср(п)

2п

или п

Пкср(п) = — + 1 . (14)

2

Очевидно: Пкср(п) > Пэср(п) .

Для расчёта эффективности Е8ер (%) деления по 8-методу на числа из этих интервалов следует иметь в виду, что:

1) равновероятно появление делителей на указанных интервалах;

2) неэффективным (т.е. с отрицательным эффектом) S-метод по сравнению с К-методом, как и в случае деления на 9 (когда В2 = 1001 с двумя единицами, а r2 = 111 с тремя единицами в записи числа), считается деление на числа, в двоичной записи которых меньше единиц, чем в двоичной записи соответствующего дополнительного множителя.

Данные по сравнению числа единиц в двоичной записи делителей Пк и соответствующих дополнительных множителей nSn для интервалов от 2n до 2n+1 при n = 3, 4, 5 приведены в табл. 2. Для делителей, у которых число единиц в двоичной записи Пк < ns, число единиц в дополнительном множителе nS выделено полужирным шрифтом;

Таблица 2

Сравнение числа единиц в двоичной записи делителей и соответствующих дополнительных множителей для интервалов от 2n до 2n+1 при n = 3, 4, 5

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

В10 32 33 62 63

16 17 30 31

8 9 10 11 12 13 14 15

Пк 1 2 2 3 2 3 3 4 2 3 3 4 3 4 4 5 2 3 3 4 3 4 4 5 3 4 4 5 4 5 5 6

nS3 1 3 2 2 1 2 1 1

nS4 1 4 3 3 2 3 2 2 1 3 2 2 1 2 1 1

ns5 1 5 4 4 3 4 3 3 2 4 3 3 2 3 2 2 1 4 3 3 2 3 2 2 1 3 2 2 1 2 1 1

3) средняя эффективность деления по 8-методу по сравнению с К-методом на этих интервалах определялось по следующей формуле

Пн

Еsср(n) =----------------------------------------• 100 (%) , (15)

4

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

Расчёт средней эффективности Е;

8ср

приведён в табл. 3.

Таблица 3

Расчёт средней эффективности S-метода на интервалах делителей от 2n до 2n+1 при n = 3, 4,.. .8

n 3 4 5 6 7 8

Пк 20 48 112 256 576 1280

ns 13 33 81 193 449 1025

ПКср 2,5 3 3,5 4 4,5 5

^ср 1,625 2,062 2,531 3,016 3,501 4,0

dn 8 16 32 64 128 256

Пн 1 2 7 13 35 64

Еср (%) 12,5 12,5 22 20,3 27,3 25

Таким образом, предварительный анализ эффективности деления по 8-методу на аппаратном уровне, исходя из принятых в данной статье условий, показал:

1. Деление, заменяемое умножением на дополнительный множитель, может осуществляться посредством пошагового сложения по двум параллельным ветвям операции:

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

• на второй ветви сложение промежуточных сумм (произведений) с результатом их сдвига вправо на число разрядов, равное количеству нулей в ближайшем для множителя двоичном числе 2n.

2. Эффективность деления по S-методу на интервалах делителя от 2n до 2n+1 для n = 3, 4, 5, 6, 7, 8 по отношению к К-методу положительна.

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

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

5. За счёт замены операции деления в конечном итоге операциями сложения и сдвига возможно повышение быстродействия ЭВМ.

6. Структура операционного блока ЭВМ для операций умножения-деления [2, с.91-92] может быть соответственно упрощена.

7. Недостатками деления по S-методу является:

• необходимость дополнительных аппаратных затрат на микрооперации ограничения количества слагаемых для получения заданного числа разрядов в частном;

• необходимость учёта возможного переполнения разрядной сетки.

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

метода деления на аппаратном уровне в ЭВМ.

Материалы по теме настоящей статьи были представлены автором в виде доклада на «Международной научно-технической конференции, посвящённой 35-летию со дня основания университета» (Москва, МГТУГА, 18-19 мая 2006 г.).

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

ЛИТЕРАТУРА

1. Математический энциклопедический словарь. - М.: Советская энциклопедия, 1988. С. 142.

2. Горнец Н.Н., Рощин А.Г., Соломенцев В.В. Организация ЭВМ и систем. - М.: Издательский центр “Академия”, 2006.

MULTIPLICATION INSTEAD OF DIVISION

Stoliar V.G.

A method of division of integers is introduced. It uses multiplication in a form of addition with a shift of digits. The method is compared with the conventional method of division the binary-coded numbers on the hardware level. As a result it is possible to increase the processing speed of computer.

Сведения об авторе

Столяр Владимир Гершевич, 1942 г.р., окончил МАИ (1966) и Московский областной педагогический институт (1974), старший преподаватель кафедры иностранных языков Московского государственного университета радиоэлектроники и автоматики, автор 7 научных работ, область научных интересов - теория чисел, в частности, операция деления.

i Надоели баннеры? Вы всегда можете отключить рекламу.