О «переводе в десятичную систему счисления»
В теме про системы счисления люди очень частно используют термин «десятичная система счисления» не совсем правильно.
Например, в задаче Universal convertor
надо перевести число из одной системы счисления с заданным основанием в другую.
Наиболее простой способ это сделать (если числа не очень большие)
— сначала перевести заданное число в тип int
или тому подобный,
потом перевести полученное значение в целевую систему счисления.
Код получается типа такого (тут я для простоты считаю, что оба основания систем счисления не превышают 10, и вообще код я не тестировал, но для иллюстрации сойдет):
sum = 0
for ch in s[::-1]:
t = ord(ch) - '0'
sum += t * d
d *= n
// теперь в sum заданое число
while sum != 0:
s2 = sum % k
sum /= k
ans = ans + chr(s2 + ord('0'))
print(ans[::-1])
И почему-то многие называют первый цикл «переводом в десятичную систему», а второй цикл — «переводом из десятичной системы».
Но ведь это неверно! По всему смыслу этих задач, перевести в ту или иную систему счисления обозначает представить число в виде массива цифр в соответствующей системе (в виде строки или честного массива и т.п.)
Код же выше ничего подобного не делает, он представляет число во внутреннем
формате языка программирования, в переменной типа int
.
В терминах этих задач это не есть представление в какой-либо системе счисления.
Это представление в каком-то внутреннем формате, и в рамках этих (и многих других) задач
можно считать, что этот формат — это какой-то черный ящик; нам совершенно не важно,
как там хранится число, в какой системе счисления (а важно лишь то, что мы можем с ним выполнять
арифметические действия).
Если уж очень вникать в детали, то можно считать, что это двоичная система счисления (потому что компьютер так хранит числа), но уж точно не десятичная! Да и двоичной системой счисления это можно назвать с большой натяжкой — как минимум в соседних задачах, где действительно надо работать с двоичной системой счисления, все всегда работают с массивом двоичных цифр.
Очевидно, десятичной системой счисления это называют лишь потому,
что при вводе-выводе таких чисел используется десятичная система.
Ну так это не особенность формата, а особенность именно ввода-вывода.
Когда вы выводите такое число на экран, язык его конвертирует в десятичную систему счисления.
Но пока вы его никуда не выводите, такие фразы довольно бессмысленны.
Говорите «переводим во внутренний формат», ну или «в int
».
Мой курс по алгоритмическому программированию (и подготовке к олимпиадам) для школьников, студентов и всех желающих — algoprog.ru