Вспомним, что десятичная система счисления – это наша привычная, из 10 знаков, цифр:
0,1,2,3,4,5,6,7,8,9.
Давайте попробуем взять любое число и перевести его, скажем, в любую систему?
Где это встречается на экзаменах: системы счисления нужны в ОГЭ по информатике в задании №11, а в ЕГЭ по информатике в задачах №5, 7, 8, 10, 14,
Что такое система счисления простыми словами
Напомним, что система счисления – это набор знаков, который используется для счёта и сами правила счёта. Количество знаков в системе – это её мощность.
Прежде, чем перейти к алгоритму, вспомним виды деления
- Дробное
- Целочисленное
В жизни мы часто пользуемся обоими видами. Скажем, если мы хотим полностью что-то разделить между всеми, до последнего кусочка, то мы используем дробное деление.
Если же нам важно, чтобы всем досталось обязательно одинаковое количество, то зачастую что-то поделить не удаётся, тогда мы этот остаток откладываем.
Ровно так и устроены 2 вида деления. Дробное в результате всегда даёт дробь, тогда как целочисленное в результате даёт только целое число. Но не одно число, а целых два.
Первое число – это целая часть от деления. По сути, это то же самое, что и целая часть числа при дробном делении. Второе число – это остаток от деления. Остатком называется та часть исходного числа, которую мы не смогли разделить.
Например число 17 разделить на 8.
Дробное деление: 17 / 8 = 2,125
Целочисленное деление: 17 // 8 = 2 (целая часть). 17 % 8 = 1 (остаток).
Проверим, что это правильно: 2 (целая часть) * 8 + 1 (остаток) = 17. Всё сходится.
А теперь к алгоритму.
Алгоритм перевода
- Берём исходное число
- Делим на новую систему
- Остаток от деления переводим в символ новой системы (если потребуется)
- Переведённый остаток от деления записываем в левую сторону к результату
- Если целая часть равна нулю – конец, иначе – берём целую часть от деления и возвращаемся на шаг 2.
Итак, рассмотрим перевод, например, в двоичную систему.
Возьмём число 25. Давайте попробуем его перевести в двоичную систему.

Алгоритм достаточно просто изображается в виде постоянного деления в столбик до тех пор, пока результатом целочисленного деления не получится ноль.
Обратим внимание на частую ошибку: при делении в столбик важно записывать остатки от последнего к самому первому (обозначено стрелкой).
В примере перевода числа 25 из десятичной в двоичную пропущен один важный шаг алгоритма: перевод остатка в новую систему. Давайте задумаемся: в результате остатка от деления на 2 возможно получить лишь 2 числа: 0 и 1. Они же и в двоичной записываются как 0 и 1, соответственно. В чём смысл шага? Пока не понятно. Давайте другой пример.
Переведём то же самое число 25, например, в 16ую систему счисления. Напомним, что в этой системе, помимо цифр 0 – 9 также присутствуют буквы a, b, c, d, e, f.

Снова всё получилось без дополнительного шага. Но это лишь повезло, что все остатки соответствуют символам новой системы: десятичное 9 – это и 16ое 9. Десятичное 1 – это и 16ое 1. Значит, надо будет что-то делать, если нечто десятичное не будет соответствовать 16ому? Что же это может быть? Это самые старшие числа: 10, 11, 12, 13, 14, 15. Именно такие остатки можно получить при делении на 16, при этом в десятичной системе это, скажем, возраст школьников: 10 – 15 лет. Но если то же самое записать в 16ой: 10 – это наши 16, 15 – это наши 21. Итого, 16 – 21 – это уже скорее возраст старшеклассников – студентов, но это точно другие числа.
Чтобы не случилось подобной путаницы нам и нужен шаг перевода остатка в новую систему. Если мы получаем число, равное и большее старой системе – его точно следует заменить. В нашем примере из 10ой в 16ую надо менять:
10 на а, 11 на b, и так далее.
Рассмотрим пример, где будет такая необходимость: переведём 255 из десятичной в шестнадцатеричную систему:

Если бы в данном случае мы не сделали перевод из 15 в F, то у нас получилось бы 1515 (или 5151, но это ещё хуже). Давайте проверим правильность перевода, получив обратно число 10ой системы:

Как видим, всё подтверждается. Правильно переводить остатки в новую систему счисления. Просто зачастую это делать не нужно, но очень важно помнить об этом при переводе в систему, большую, чем та, в которой были исходно.
С точки зрения программирования, можно осуществлять этот шаг в любом случае, но нужно понимать, что в случае общих знаков между двумя системами этот переход не будет заметен.
Если вы ответили на этот вопрос, то теперь давайте попробуем проверить.
Возьмём 10ое число 123 и переведём его в 10ую систему тем же самым алгоритмом:

Данное вычисление подтверждает, что перевод в ту же самую систему данным алгоритмом возможен и, разумеется, даёт исходное число в результате.
Алгоритм перевода из десятичной системы достаточно прост, но требует практического закрепления, поэтому в конце статьи предлагаю вам самостоятельно решить несколько примеров:

Комментарии:
Комментировать