Ещё раз о числе и его представлении
Просмотров: 1205
08 января 2020 года
Аннотация
Продолжая стенания о повсеместном употреблении жаргонизма «десятичное число», вместо терминологически верного «число, записанное в десятичной системе счисления», я взял, да и провёл конвертацию числа, записанного римскими цифрами, в число, представленное в шестнадцатеричной системе счисления.
Мятежный дух данного поступка в следующем: вопреки указаниям в учебнике по информатике (и вторящей им справке такого продукта как MATLAB), я не проводил предварительной трансляции числа в привычную нам десятичную систему счисления.
Все операции по переводу выполнены согласно правилам работы с римскими цифрами и никак не используют арифметические приёмы, принятые в позиционных системах счисления: вероятно так выглядела бы реализация алгоритма конвертации в эпоху римских цифр.
- Деление заменено каскадом вычитаний чисел, кратных 16 и одной из римских цифр.
- Умножение (при подготовке вспомогательной таблички) произведено посимвольно.
- Вычитание представляет собой вычёркивание одинаковых символов, используемых в записи операндов, до исчерпания символов в правом операнде.
- Ноль заменён пустотой.
- Полученные остатки от делений на 16 сохраняются и затем формально транслируются (отображаются) на алфавит шестнадцатеричной системы счисления. Данную операцию сопоставления одних значков другим можно доверить дошкольнику.
Я не буду приводить простыню нудных вычислений. Вместо этого я записал видео одним дублем.
Выражаю огромную благодарность терпеливому оператору: без него реализовать задумку не удалось бы.
Так как я не утомлял себя синхронным комментированием процесса, аудиодорожка содержала только комментарии оператора о качестве картинки. Поэтому звук был изменён на трек из фонотеки видеохостинга.
Вывод
- "Котлеты - отдельно, мухи-отдельно": не смешивайте число и его формы представления.
- Римские цифры самодостаточны: для них определены алгоритмы основных арифметических операций, без необходимости конвертации в позиционную систему счисления (сложение вообще сводится к простой конкатенации записей операндов [?]при условии, что числа не в компактной записи).
- Работа с римскими цифрами примитивна: работать просто, но выкладки столь громоздки, что велика вероятность ошибки (см. видео после 26-ой минуты, где я поначалу потерял X).
- Предварительная трансляция числа в позиционную систему счисления (десятичную, как воспринимаемую естественно) позволяет ускорить процесс (30 минут на конвертацию одного числа!) путём использования оптимизированных алгоритмов арифметических операций.
Комментарии