Назад в библиотеку

ПРЕОБРАЗОВАТЕЛЬ ВЕЩЕСТВЕННЫХ ЧИСЕЛ С РЕГУЛИРУЕМОЙ ТОЧНОСТЬЮ

Автор: Иваница С.В., Кулибаба С.В., Аноприенко А.Я
Источник: http://ea.donntu.ru:8080/jspui/handle/123456789/30301

Аннотация
Иваница С.В., Кулибаба С.В., Аноприенко А.Я. Преобразователь вещественных чисел с регулируемой точностью.
Представлена программа-конвертор вещественных чисел в базовые позиционные системы счисления (2, 10, 16 с/с) с регулируемой точностью формирования дробной части преобразованного числа. Описаны расширенная функциональность конвертора и особенности реализации используемых алгоритмов перевода длинных чисел из одной с/с в другую без использования регистров процессора

Введение

В связи с бурным развитием вычислительных технологий, а также с ежедневно повышающимися требованиями к точности вычислений, возникает необходимость оперировать числами с большим классом точности. При разработке программного обеспечения для высокоточных вычислительных систем, программист во время отладки программного кода вынужден анализировать промежуточные результаты, представленные в виде набора машинных слов. Поскольку машинное слово является по сути двоичным числом, то часто возникает ситуация когда для человеческого восприятия нужно двоичное число представить в более компактном 16-ричном виде или вообще в виде «человеческого» десятичного числа [1]. Оказавшись в такой ситуации, программист спешит обзавестись набором программных инструментов, в числе которых обязательно присутствует программа, позволяющая выполнять переводы чисел в различные системы счисления.

В данном докладе представлена программа-конвертор, являющаяся, по мнению разработчиков (собственно, авторов доклада), претендентом на «продвинутость» по отношению к аналогичным программам других разработчиков.

К вопросу актуальности создания программы-конвертора

Идея создания данного программного продукта берет свое начало в целом цикле исследований, подтверждающих эффективность перехода к постбинарным форматам чисел с плавающей запятой [2–4], в ходе работы над которыми стояли задачи взаимообратного перевода десятичных дробей в двоичные с возможностью получения вещественных чисел высокой точности (вплоть до 10000 значащих цифр после запятой).

Прежде чем приступить к созданию собственного программного продукта, была предпринята попытка поиска уже готовой программы, предназначенной для конвертирования дробных чисел с необходимой точностью. Однако среди множества рассмотренных программ-конверторов не было ни одного полнофункционального, позволяющего задавать точность преобразованного числа. Большинство рассмотренных программ вообще не работали с дробными числами. Из числа тех программных продуктов, которые все-таки справились с конвертированием дробных чисел, можно отметить, например, программу «.:DOS:. Перевод чисел» [5] и онлайн-сервисы: «Система счисления онлайн» [6], «Wolfram Alpha» [7]. Но вопрос точности получаемых после конвертирования дробей оставался по-прежнему открытым.

При этом следует отметить, что онлайн-сервис Wolfram Alpha, оставил конкурентов далеко позади, порадовав возможностью представления двоичной дроби с точностью до 2066 символов. Однако данная процедура требует от пользователя терпения, поскольку из-за отсутствия выбора точности конвертирования результат выводится порциями и для получения новой порции (опция «Показать больше цифр») приходится каждый раз обновлять результат. При этом полученный результат представлен в виде графического файла, и чтобы его использовать как число, необходимо дополнительно подключать сервисы распознавания текста.

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

Таким образом, созданная авторами собственная программа-конвертор ( bin-dec-hex fractional number converter ) лишена указанных выше недостатков и фактически способна работать с вещественными числами любой длины (установленный предел в 10 000 цифр можно расширять по мере необходимости).

Особенности работы и возможности программы bin-dec-hex fractional number converter

На рис. 1 представлен интерфейс программы bin-dec-hex fractional number converter (далее b-d-h converter) при конвертировании числа в двоичную дробь с точностью 5 000 двоичных цифр

Интерфейс программы bin-dec-hex converter в режиме представления числа

Рисунок 1 - Интерфейс программы bin-dec-hex converter в режиме представления числа (16 значащих цифр) в 2 с/с с точностью 5 000 двоичных разрядов

В качестве особенностей программы b-d-h converter можно выделить следующие:

  1. Кроссплатформенность. Обеспечивается тем, что данная программа написана на языке java, виртуальная машина которой позволяет запускать приложения как в ОС Windows, так и в *nix-подобных систем.
  2. Дружественный интерфейс. В связи с ростом планшетных компьютеров и сенсорных экранов, приветствуется наличие экранной клавиатуры, т. к. не всегда стандартная экранная клавиатура является удобной в использовании. Также, основные функции программы продублированы в комбинациях клавиш для быстрого вызова.
  3. Регулируемая точность преобразования. Пользователю предоставляется возможность самому вручную выбрать точность преобразования чисел (количество цифр после запятой) от 0 (только целая часть числа) до 10 000. Точность числа по умолчанию — 1 000 цифр.
  4. Ведение истории конвертирования с возможностью сохранения в файле. После каждой операции, в поле «История операций» добавляются следующие строки: исходное число, направление конвертирования, результат преобразования.
  5. Загрузка исходного числа из файла. Не всегда удобно вводить числа большой длины вручную, особенно, когда они являются результатами вычислений. В таком случае, их удобнее записать в файл. Программа позволяет загрузить такой файл в поле ввода числа.
  6. Мультиязычный интерфейс. Программа способна «общаться» с пользователями на русском, украинском, английском и немецком языках.

Непохожесть программы b-d-h converter на аналогичные конверторы простирается дальше ее функционала и касается также алгоритмического базиса. Прежде всего, программа не использует математические возможности микропроцессора, поскольку микропроцессор не способен производить настолько точные вычисления. Все данные программа представляет в виде строк символов, и производит необходимые преобразования, используя механизмы посимвольной обработки. Такие процедуры реализуют программную математику (т. е. все математические операции выполняются как операции над текстовыми строками), скорость вычисления которой ниже вычислений с аппаратной поддержкой. Однако при работе даже с максимально длинными числами, время конвертирования не превышает 2–3 секунд (в строке статуса программы реализован счетчик времени выполнения текущей операции, значения которого также сохраняются в истории).

Выводы

В последнее время наблюдается рост количества специалистов компьютерных наук и технологий. Поэтому в вузах все большее число студентов компьютерных специальностей начинают изучение компьютерных наук с основ информатики, где они непременно сталкиваются с представлением вещественного числа в различных системах счисления. В этом случае программа b-d-h converter может выступить не только в качестве рабочего инструмента для программистов или инженеров компьютерных систем, а и в качестве тренажера для студентов. Авторы предполагают скорое появление данного конвертора на портале компьютерного моделирования ДонНТУ [8], доступного для свободного использования. Сейчас b-d-h converter расположен на персональном сайте одного из авторов [9].

В заключении следует отметить, что, несмотря на скрупулезный поиск аналогов разработанного конвертора, способных на здоровую конкуренцию, — таковых не нашлось, мнение об уникальности и единственности в своем роде этой программы все-таки остается субъективным. Ведь охватить весь объем подобного программного обеспечения не представляется возможным. Поэтому авторы обращаются с призывом сообщать по электронной почте (адреса в заголовке) сведения о программах-конверторах или онлайн-сервисах, обладающих не меньшими возможностями, чем представленная программа b-d-h converter.

Список литературы


1. Фомин С.В. Системы счисления. / С.В. Фомин — 5-е изд. — М.: Наука. Гл. ред. физ.-мат. лит., 1987. — 48 с.
2. Аноприенко А.Я. Особенности представления постбинарных вещественых чисел в контексте интервальных вычислений и развития аппаратного обеспечения средств компьютерного моделирования. / А.Я. Аноприенко, С.В. Иваница, С.В. Кулибаба // Материалы четвертой международной научно-технической конференции «Моделирование и компьютерная графика» 5–8 октября 2011 года, Донецк, ДонНТУ, 2011. C. 13–19.
3. Аноприенко А.Я. Постбинарный компьютинг и интервальные вычисления в контексте кодо-логической эволюции. / А.Я. Аноприенко, С.В. Иваница — Донецк, ДонНТУ, УНИТЕХ, 2011. — 248 с.
4. Аноприенко А.Я. Представление постбинарных форматов чисел с плавающей запятой в контексте интервальных вычислений. / А.Я. Аноприенко, С.В. Иваница, С.В. Кулибаба // Наукові праці Донецького національного технічного університету, серія «Інформатика, кібернетика та обчислювальна техніка»,вып. 14 (188). — Донецк, ДонНТУ, 2011. — С. 55–60.
5. Программа для перевода чисел из одной системы счисления в другую с выведением перевода по шагам. [Электронный ресурс] — Режим доступа: http://pascalstudy.narod.ru/loading/opred.zip.
6. Перевод чисел в двоичную, шестнадцатеричную, десятичную, восьмеричную системы счисления online. [Электронный ресурс] — Режим доступа: http://math.semestr.ru/inf/index.php.
7. Wolfram Alpha: Computational Knowledge. [Электронный ресурс] — Режим доступа: http://www.wolframalpha.com.
8. Портал компьютерного моделирования ДонНТУ. [Электронный ресурс] — Режим доступа: http://sim.donntu.ru/.
9. Bin-dec-hex конвертер дробных чисел. [Электронный ресурс] — Режим доступа: http://kulibaba.net/project/bin-dec-hex_fractional_number_convertor.