"Десятичных чисел" не существует
Просмотров: 2560
06 марта 2016 года
Мальчик: Не пытайся согнуть ложку; это невозможно. Вместо этого, попытайся понять главное.
Нео: Что - главное?
Мальчик: Ложки не существует.
Нео: Не существует?
Мальчик: Знаешь, это не ложка гнется, всё обман. Дело в тебе.
Сколько часов в сутках? Двадцать четыре? 2410? XXIV? 1816?
Число, само по себе - некая абстракция, характеризующая некоторую величину: количество яблок на столе, сумму в кошельке, и т.п. Хотя оперирование числами требует от субъекта определённого уровня интеллектуального развития, для их восприятия (с некоторыми оговорками) не требуется даже придумывать названия цифрам. Например, утверждается (и я склонен этому верить), что наседка начинает волноваться, когда число цыплят, за время её непродолжительного отсутствия, существенно уменьшается. Или вот ещё: во время моей учёбы в университете, лектор, в рамках курса электроники, озвучил тезис "железка считать не умеет".
Итак, мы можем помыслить себе произвольное число, даже не придумывая ему название, а просто: представить себе N яблок, или воспользоваться иными визуальными примитивами (я точно помню, что использовал такие системы, до того как "научился считать").
Пределы для N (и степень точности с ростом N) очевидно определяются эволюционной необходимостью для того или иного животного.
В должной степени пропитав свои мысли десятичной системой счисления, мы начинаем, при необходимости, мыслить в данной системе кодирования чисел. Более того: несколько бессонных ночей за разборкой дампа в hex-представлении - и Вы уже точно знаете, что 8+8=10 [?]
816+816=1016
.Мышление среднестатистического человека так приклеивается к концепции десятичных чисел, что уже не делает разницы между числом и его десятичной формой представления. Со временем жаргонизм "десятичное число", подразумевающий "число, представленное в позиционной системе счисления с основанием 10", начинает вредить формальной части вопроса.
Занудство? - отнюдь. Откроем, например, учебник по информатике для 10 класса (издание допущено к использованию в школах; в школьной библиотеке мне выдали для занятий издание 2008-ого года).
В этой книге мы без труда найдём алгоритм перевода целых десятичных чисел в двоичную и прочие системы счисления. Операции подразумевают некое "десятичное число" на входе. Как по мне - это ограничение надумано, и, руководствуясь этим алгоритмом, можно напрямую перевести, например, число XXII в двоичную систему. Проблема в том, что большинство современных людей не умеет делить числа, записанные римскими цифрами, без дополнительной конвертации аргументов в десятичную систему счисления ("мой" класс умел).
Но, не подумайте, что такое встречается лишь в учебниках: пожалуйста - серьёзнейших математический пакет MATLAB:
dec2base
Convert decimal to base N number in string
[...]
Description
str = dec2base(d, base)
d
d
"Десятичные число" в числовой переменной современного компьютера?! Я разочарован. Вероятно, многие далёкие от Си++ программисты даже и не знают какого это: вывести содержимое числовой переменной в виде набора байт. Как это весело: инвертировать знак вещественного числа, манипулируя его битами (предупреждение о т.н. "грязном хаке"). А быстрый обратный квадратный корень? Для них целая переменная - это мистическое "десятичное число".
Столько всего наговорил, что самое время резюмировать.
Вывод
Итак, термин "десятичное число", в общем-то, жаргонный, подразумевающий "число, представленное в позиционной системе счисления с основанием 10". Привычка к этому сокращению может деформировать понимание сути вещей и привести к падению эффективности реализуемых алгоритмов.
Wake up, Neo...
Комментарии