РУсскоязычный Архив Электронных СТатей периодических изданий
Инженерный журнал: наука и инновации/2012/№ 1/

СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ ПРОИЗВОЛЬНОГО РАЗМЕРА

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

Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
С и л а н т ь е в а СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ ПРОИЗВОЛЬНОГО РАЗМЕРА Приведено описание подходов к оценке быстродействия алгоритмов, реализующих операции сложения и вычитания целых чисел произвольной размерности, на основе подсчета числа операций, выполняемых в ходе их обработки. <...> К числу таких операций относятся операции сложения и вычитания целых чисел произвольного размера. <...> Для представления целых чисел произвольного размера можно использовать битовую модель из нескольких байт, учитывая при сложении или вычитании возникающий особый характер переноса бит как внутри байт, так и между байтами. <...> Ниже приведена программа AI03, в которой функции Align( ) и Align2( ) выполняют выравнивание количества цифр в двух числовых массивах, дополняя нули в старших разрядах числа с меньшим количеством цифр: // Program AI03 (Win32) // Выравнивание байтовых чисел в обратном порядке 40 ISSN 0236-3933. <...> На первом этапе выполняется инструкция int k = nu – nv, в которой две операции (из перечня машинных команд сложения, вычитания, загрузки, сохранения и сравнения) вычитание ‘–‘ и сохранение ‘=’. <...> Объявление функции BinaryAlign( ) содержит модификатор inline, который реализуется компилятором как непосредственная подстановка тела функции, а не вызов с параметрами: WAlign2 2 = 2 + A. <...> На выполнение инструкции цикла for (intj = nz 1; j < n1; j + +)z[j] = 0 приходится две операции для int j = nz 1, одна операция j < n1, и на каждой итерации выполняются: одна операция: проверки условия ‘<’, две операции на увеличение и запоминание индекса j + +, две операции на определение адреса элемента z[j] и запоминания 0: WAlign 3 = 3 + Если выравнивать байтовый массив числа не следует, то n = nz. <...> Анализ быстродействия данного этапа полностью совпадает с оценкой WAlign2 2 WAlign2 Итак, функция Align2( ) делает минимальное количество операций, 3 = 5n 3. когда выравнивание не выполняется. <...> Максимальное количество операций наступает, когда число из одной цифры дополняется в старших разрядах <...>
** - вычисляется автоматически, возможны погрешности

Похожие документы: