Образование·Информатика

Перевод систем счисления

Алгоритмы перевода чисел между системами счисления с примерами. Двоичная, восьмеричная, десятичная и шестнадцатеричная системы.

Что такое системы счисления

Система счисления — это способ записи чисел с помощью определённого набора символов. Одно и то же значение можно представить по-разному: число 42 в десятичной системе записывается как 101010 в двоичной, 52 в восьмеричной и 2A в шестнадцатеричной.

Основание системы показывает, сколько уникальных цифр доступно для записи. В позиционных системах (а именно они используются повсеместно) значение каждого разряда умножается на степень основания.

Основные системы счисления в программировании

Десятичная система (основание 10)

Привычная нам система с цифрами от 0 до 9. Используется в повседневной жизни, финансах и науке.

Двоичная система (основание 2)

Цифры только 0 и 1. Электронные схемы работают на двух состояниях — сигнал есть или нет, поэтому двоичная система естественна для вычислительной техники.

Восьмеричная система (основание 8)

Цифры от 0 до 7. Встречается в UNIX-системах при обозначении прав доступа к файлам (например, chmod 755).

Шестнадцатеричная система (основание 16)

Цифры 0–9 и буквы A–F. Каждая буква заменяет число: A=10, B=11, C=12, D=13, E=14, F=15. Широко применяется для записи цветов в вебе (#FF5733), адресов памяти и машинного кода.

Перевод в десятичную систему

Любое число из любой системы переводится в десятичную через развёрнутую форму записи. Каждая цифра умножается на основание в степени своего разряда.

Формула перевода

Для числа d₂d₁d₀ в системе с основанием b:

N = d₀ × b⁰ + d₁ × b¹ + d₂ × b²

Пример: двоичное 1101 в десятичное

1101₂ = 1 × 2³ + 1 × 2² + 0 × 2¹ + 1 × 2⁰
       = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1
       = 8 + 4 + 0 + 1
       = 13₁₀

Пример: шестнадцатеричное 1F в десятичное

1F₁₆ = 1 × 16¹ + 15 × 16⁰
     = 16 + 15
     = 31₁₀

Обратите внимание: буква F — это 15.

Перевод из десятичной системы

Метод деления

Для перевода десятичного числа в любую другую систему используется последовательное деление на основание.

Алгоритм:

  1. Делите число на основание целевой системы
  2. Записывайте остаток от каждого деления
  3. Продолжайте, пока частное не станет равно 0
  4. Прочитайте остатки снизу вверх

Пример: число 158 в двоичную систему

158 ÷ 2 = 79    остаток 0
79  ÷ 2 = 39    остаток 1
39  ÷ 2 = 19    остаток 1
19  ÷ 2 = 9     остаток 1
9   ÷ 2 = 4     остаток 1
4   ÷ 2 = 2     остаток 0
2   ÷ 2 = 1     остаток 0
1   ÷ 2 = 0     остаток 1

Результат: читаем остатки снизу вверх → 10011110₂

Пример: число 158 в восьмеричную систему

158 ÷ 8 = 19    остаток 6
19  ÷ 8 = 2     остаток 3
2   ÷ 8 = 0     остаток 2

Результат: 236₈

Быстрый перевод между родственными системами

Системы с основаниями 2, 8 и 16 связаны степенью двойки. Это позволяет переводить числа напрямую, минуя десятичную систему.

Почему это работает

  • 8 = 2³ — значит, 3 двоичных разряда = 1 восьмеричная цифра
  • 16 = 2⁴ — значит, 4 двоичных разряда = 1 шестнадцатеричная цифра

Таблица соответствия

Десятичное Двоичная группа (3) Восьмеричная Двоичная группа (4) Шестнадцатеричная
0 000 0 0000 0
1 001 1 0001 1
5 101 5 0101 5
9 1001 9
10 1010 A
15 1111 F

Перевод из двоичной в шестнадцатеричную

Число 11110110 разбивается на тетрады (группы по 4 бита) справа налево:

11110110 → 1111 0110 → F 6 → F6₁₆

Перевод из шестнадцатеричной в двоичную

Каждая шестнадцатеричная цифра заменяется четырьмя двоичными:

3A₁₆ → 3 A → 0011 1010 → 00111010₂

Типичные ошибки при переводе

Ошибка 1: Неправильный порядок чтения остатков

Остатки читаются снизу вверх, а не сверху вниз.

Ошибка 2: Забытая позиция цифры

Позиции нумеруются с нуля справа налево. Крайний правый разряд — это 0.

Ошибка 3: Путаница с цифрами шестнадцатеричной системы

Буквы A–F всегда означают числа 10–15. При вычислениях заменяйте их на эти значения.

Практическое применение

Понимание переводов между системами счисления нужно не только для учёбы. В программировании шестнадцатеричная запись используется для цветов в CSS (color: #E74C3C), сетевых адресов IPv6, дампов памяти при отладке. Восьмеричная система встречается в UNIX при работе с правами доступа (chmod 644). Двоичная — основа всей цифровой электроники.

Умение быстро переводить между системами 2–8–16 позволяет читать дампы памяти, понимать значения флагов и эффективнее работать с низкоуровневым кодом.

Часто задаваемые вопросы

Как перевести число из любой системы счисления в десятичную?
Нужно записать число в развёрнутой форме: каждую цифру умножить на основание системы в степени её позиции и сложить результаты. Позиции нумеруются справа налево, начиная с нуля.
Как перевести десятичное число в двоичную систему?
Последовательно делите число на 2, записывая остатки от деления. Когда частное станет равно нулю, прочитайте остатки в обратном порядке — это и будет результат.
Почему 8 и 16 системы удобны для перевода из двоичной?
Потому что 8 = 2³ и 16 = 2⁴. Это позволяет группировать двоичные цифры по 3 или 4 разряда и заменять каждую группу одной цифрой целевой системы.
Какие цифры используются в шестнадцатеричной системе?
Цифры от 0 до 9 и буквы A, B, C, D, E, F. Буквы обозначают числа 10, 11, 12, 13, 14 и 15 соответственно.
Зачем программистам уметь переводить между системами счисления?
Двоичная система используется на уровне процессора, шестнадцатеричная — для компактной записи двоичных данных (цвета, адреса памяти, коды символов). Понимание переводов необходимо для отладки и анализа данных.