Требуется обновление браузера.

"Десятичных чисел" не существует


Просмотров: 1114
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)
converts the nonnegative integer
d
to the specified base.
d
must be a nonnegative integer [...]

"Десятичные число" в числовой переменной современного компьютера?! Я разочарован. Вероятно, многие далёкие от Си++ программисты даже и не знают какого это: вывести содержимое числовой переменной в виде набора байт. Как это весело: инвертировать знак вещественного числа, манипулируя его битами (предупреждение о т.н. "грязном хаке"). А быстрый обратный квадратный корень? Для них целая переменная - это мистическое "десятичное число".

Столько всего наговорил, что самое время резюмировать.

Вывод


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

Wake up, Neo...

Запись опубликована в категориях:

Цифры и числа Алгоритмы и аспекты  
 

Комментарии

Инкогнито
  Загружаем captcha