Перевод чисел из одной системы счисления в другую
Как перевести число в другую систему счисления: правила, формулы и примеры для двоичной, восьмеричной, десятичной и шестнадцатеричной систем.
Принцип работы позиционных систем счисления
Прежде чем разбирать перевод чисел между системами счисления, важно понять, как устроены сами эти системы. В позиционной системе значение каждой цифры зависит от её места в записи числа. Основание системы — это количество уникальных цифр, которые в ней используются.
В привычной десятичной системе основание равно 10: используются цифры от 0 до 9. В двоичной системе основание равно 2 — только 0 и 1. В восьмеричной — 8, в шестнадцатеричной — 16.
Запись числа в любой позиционной системе — это сумма цифр, умноженных на основание в степени позиции. Позиции отсчитываются от нуля справа налево. Например, число 3057 в десятичной системе означает:
3057 = 3×10³ + 0×10² + 5×10¹ + 7×10⁰ = 3000 + 0 + 50 + 7
Этот принцип работает для любого основания, и именно на нём строятся все алгоритмы перевода.
Перевод из любой системы счисления в десятичную
Самый универсальный способ перевода — разложить число по степеням основания и вычислить сумму. Для каждой цифры нужно умножить её значение на основание, возведённое в степень позиции разряда, а затем сложить все результаты.
Формула перевода:
Если число имеет вид aₙaₙ₋₁…a₁a₀ в системе с основанием b, то его десятичное значение равно:
aₙ×bⁿ + aₙ₋₁×bⁿ⁻¹ + … + a₁×b¹ + a₀×b⁰
Пример: перевод из двоичной в десятичную
Переведём 110101₂ в десятичную систему:
1×2⁵ + 1×2⁴ + 0×2³ + 1×2² + 0×2¹ + 1×2⁰ = 32 + 16 + 0 + 4 + 0 + 1 = 53₁₀
Пример: перевод из шестнадцатеричной в десятичную
Переведём 2AF₁₆ в десятичную систему. Помним, что A=10, F=15:
2×16² + 10×16¹ + 15×16⁰ = 2×256 + 10×16 + 15×1 = 512 + 160 + 15 = 687₁₀
Пример: перевод из восьмеричной в десятичную
Переведём 347₈ в десятичную систему:
3×8² + 4×8¹ + 7×8⁰ = 3×64 + 4×8 + 7×1 = 192 + 32 + 7 = 231₁₀
Этот метод работает для любого основания — будь то троичная, семеричная или тридцатидвуричная система.
Перевод из десятичной системы счисления в другие
Обратный перевод выполняется последовательным делением числа на основание целевой системы. Делите десятичное число на основание, записывайте остатки, затем повторяйте с частным. Когда частное станет равно нулю, запишите остатки в обратном порядке — от последнего к первому.
Пример: перевод из десятичной в двоичную
Переведём 47₁₀ в двоичную систему:
47 ÷ 2 = 23, остаток 1 23 ÷ 2 = 11, остаток 1 11 ÷ 2 = 5, остаток 1 5 ÷ 2 = 2, остаток 1 2 ÷ 2 = 1, остаток 0 1 ÷ 2 = 0, остаток 1
Записываем остатки снизу вверх: 101111₂. Проверка: 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 1×2¹ + 1×2⁰ = 32 + 0 + 8 + 4 + 2 + 1 = 47 ✓
Пример: перевод из десятичной в шестнадцатеричную
Переведём 700₁₀ в шестнадцатеричную систему:
700 ÷ 16 = 43, остаток 12 (C) 43 ÷ 16 = 2, остаток 11 (B) 2 ÷ 16 = 0, остаток 2
Результат: 2BC₁₆. Проверка: 2×16² + 11×16¹ + 12×16⁰ = 512 + 176 + 12 = 700 ✓
Перевод между системами с основаниями, кратными двойке
Когда системы связаны степенью двойки, перевод можно выполнять напрямую, без промежуточного перехода через десятичную систему. Это экономит время и снижает вероятность ошибок.
Таблица соответствия для групп битов
| Двоичная группа (4 бита) | Шестнадцатеричная цифра | Двоичная группа (3 бита) | Восьмеричная цифра |
|---|---|---|---|
| 0000 | 0 | 000 | 0 |
| 0001 | 1 | 001 | 1 |
| 0010 | 2 | 010 | 2 |
| 0011 | 3 | 011 | 3 |
| 0100 | 4 | 100 | 4 |
| 0101 | 5 | 101 | 5 |
| 0110 | 6 | 110 | 6 |
| 0111 | 7 | 111 | 7 |
| 1000 | 8 | — | — |
| 1001 | 9 | — | — |
| 1010 | A | — | — |
| 1011 | B | — | — |
| 1100 | C | — | — |
| 1101 | D | — | — |
| 1110 | E | — | — |
| 1111 | F | — | — |
Перевод из двоичной в шестнадцатеричную
Разделите двоичное число на группы по 4 бита справа налево. Каждую группу замените шестнадцатеричной цифрой.
Пример: 110101111001₂
Группируем по 4: 1101 0111 1001
1101₂ = D, 0111₂ = 7, 1001₂ = 9
Результат: D79₁₆
Перевод из шестнадцатеричной в двоичную
Каждую шестнадцатеричную цифру замените четырьмя двоичными битами.
Пример: A3F₁₆
A = 1010₂, 3 = 0011₂, F = 1111₂
Результат: 101000111111₂
Перевод между двоичной и восьмеричной системами
Принцип тот же, но группы по 3 бита.
Пример: 101110₂ → 101 110 → 56₈
Пример: 73₈ → 7 = 111, 3 = 011 → 111011₂
Перевод дробных чисел
Дробные числа требуют отдельного подхода для целой и дробной части.
Целая часть переводится делением на основание (описано выше).
Дробная часть переводится последовательным умножением на основание. Умножайте дробную часть на основание, записывайте целую часть результата как очередную цифру, затем повторяйте с дробной частью произведения. Процесс завершается, когда дробная часть станет равна нулю или будет достигнута нужная точность.
Пример: перевод 0.375₁₀ в двоичную систему
0.375 × 2 = 0.75 → целая часть 0 0.75 × 2 = 1.5 → целая часть 1, дробная 0.5 0.5 × 2 = 1.0 → целая часть 1, дробная 0
Результат: 0.011₂
Проверка: 0×2⁻¹ + 1×2⁻² + 1×2⁻³ = 0 + 0.25 + 0.125 = 0.375 ✓
Пример: перевод 0.8125₁₀ в шестнадцатеричную систему
0.8125 × 16 = 13.0 → целая часть 13 = D
Результат: 0.D₁₆
Типичные ошибки при переводе чисел
Первая ошибка — путаница с позициями цифр. Позиции всегда отсчитываются от нуля, начиная с крайнего правого разряда. Число 101₂ — это не 1+0+1=2, а 1×2² + 0×2¹ + 1×2⁰ = 5.
Вторая ошибка — неправильная замена букв в шестнадцатеричной системе. Буква A всегда равна 10, B — 11, и так далее до F = 15. Это не буквы в алфавитном смысле, а условные обозначения для чисел, больших 9.
Третья ошибка — неполный перенос всех цифр при группировке в системах с основаниями-степенями двойки. Если крайняя левая группа содержит меньше цифр, чем нужно для полной группы, её необходимо дополнить нулями слева. Например, 101₂ при переводе в шестнадцатеричную систему дополняется до 0101₂, а затем уже преобразуется.
Краткое резюме методов перевода
| Направление перевода | Метод |
|---|---|
| Из любой в десятичную | Разложение по степеням основания |
| Из десятичной в любую | Последовательное деление с остатками |
| Между степенями двойки | Группировка битов (по 3 или 4) |
| Дробная часть | Умножение на основание с записью целых частей |
Главное правило: любой перевод сводится к пониманию того, что каждая позиция в записи числа имеет свой вес, равный степени основания. Освоив этот принцип, вы сможете переводить числа между любыми системами счисления — не только тетрадными, восьмеричными или шестнадцатеричными, но и менее распространёнными, такими как троичная или двенадцатеричная.