Сколько раз слово "и" встречается в букве "цивилизация"?
Никто же так не спрашивает - все понимают, где буквы, а где слова.
Так сколько же можно издеваться над числами, постоянно путая связанные с ними понятия?
Итак, как правильно использовать понятия, связанные с числами, и чем они отличаются?
Ответ
Числа
Число - это абстрактная единица измерения количества.
1, 2, 1888, 712.4 - всё это числа.
-7 - тоже число. Хотя в большинстве языков программирования литеральной записью не обладает.
Число представляет собой значение. Оно не обладает ни единицей измерения, ни системой счисления. Строго говоря, нельзя даже говорить, что оно состоит из цифр.
Числа в рамках языка программирования
К тому, что сказано выше добавляется тип данных, а так же возможность литеральной записи.
В памяти число представлено неким набором бинарных данных. Не надо говорить, что в этом куске памяти лежат хексы. Это просто байты и биты. Шестнадцатеричный дамп куска памяти - это именно дамп, но не число.
Например, для Си:
10, 012, 0xa, 0x0A - это разные записи одного и то же числа.
10, 10L, 10.0 - это разные (хотя и равные) числа, поскольку они имеют разный тип данных. Конечно, они могут рассматриваться как одинаковые, если для нас важна величина, а не тип, но с точки зрения компилятора они различаются.
Системы счисления
Число может быть представлено в виде строки в различных системах счисления.
Это по-прежнему одно и то же число, но строковые представления различны.
"1111111111", "1010", "14", "A" - это всё представления числа 10 в различных системах счисления (унарная, бинарная, шестиричная и шестнадцатеричная соответственно).
Фраза "число в шестнадцатеричной системе счисления" корректна, но неявно подразумевает "текстовое представление числа в шестнадцатеричной системе счисления", т. е. речь далее идёт о строке, а не о числе.
Цифры
Буква - это один символ в слове, а
Цифра - это один символ в строковом представлении числа (по умолчанию - десятичном).
Цифра может подразумевать и строковый ("5", "A"), и числовой (5, 10) вариант.
Строковый вариант представляет собой выводимый символ, тогда как числовой следует рассматривать как остаток в кольце вычетов.
Арифметические операции над цифрами в производить нельзя.
Фраза "сложить цифры 5 и 7" некорректна, складывать можно только числа.
Однако, в некоторых случаях возможна неявная интерпретация цифр как чисел.
Цифры числа
Если не оговаривается система счисления, то подразумевается десятичная.
Под цифрами числа, как правило, подразумеваются числовой смысл цифр.
Т. е. цифры числа - это набор остатков в кольце вычетов по основанию системы счисления, который при скалярном умножении на соответствующие степени системы счисления (уже вне кольца) даст оригинальное число. По умолчанию этот набор упорядоченный.
В этом контексте можно говорить об арифметических операциях, например "сумма цифр числа" - это сумма чисел указанного выше набора. Поскольку речь уже идёт о числах, система счисления более не играет роли - она была нужна только для получения набора.
Цифры в строковом контексте
Цифра - это любой символ, который относится к соответствующей категории юникода.
Можно считать, что он используется для записи чисел в естественных языках (языки программирования не подходят: в записи 0xA - символ A используется как цифра, но в реальности является буквой). В то же время я не могу со стопроцентной гарантией сказать, что любая цифра юникода используется хотя бы в одном естественном языке.
PS: В большинстве случаев выше подразумеваются целые числа, однако аналогичная интерпретация возможна и для дробных.
Комментариев нет:
Отправить комментарий