Незнайка
Вся теория
Теория· 6 мин чтения

Системы счисления: перевод чисел между системами

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

В этой статье вы сможете узнать:

  • чем позиционная система счисления отличается от непозиционной;
  • как переводить числа из десятичной системы в другую и обратно;
  • как быстро переводить числа между системами с кратными основаниями (двоичной, восьмеричной, шестнадцатеричной).

Что такое позиционная система счисления

В позиционной системе счисления значение цифры зависит от её позиции (разряда) в записи числа. Число в системе с основанием qq записывается как сумма произведений цифр на степени основания:

anan−1…a1a0=an⋅qn+an−1⋅qn−1+…+a1⋅q1+a0⋅q0a_n a_{n-1} \ldots a_1 a_0 = a_n \cdot q^n + a_{n-1} \cdot q^{n-1} + \ldots + a_1 \cdot q^1 + a_0 \cdot q^0

Например, число 1011012101101_2 в двоичной системе означает:

1⋅25+0⋅24+1⋅23+1⋅22+0⋅21+1⋅20=32+8+4+1=451 \cdot 2^5 + 0 \cdot 2^4 + 1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 32 + 8 + 4 + 1 = 45

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

Чтобы перевести число в десятичную систему, нужно расписать его по разрядам, умножить каждую цифру на основание системы в соответствующей степени и сложить результаты — как показано в примере выше.

1A16=1⋅161+10⋅160=16+10=26101A_{16} = 1 \cdot 16^1 + 10 \cdot 16^0 = 16 + 10 = 26_{10}

(здесь цифра A в шестнадцатеричной системе соответствует числу 10)

Перевод из десятичной системы в любую другую

Число переводится делением на основание новой системы с последовательной записью остатков, начиная с последнего:

Перевести 451045_{10} в двоичную систему:

45÷2=22 (остаток 1)45 \div 2 = 22 \text{ (остаток } 1\text{)} 22÷2=11 (остаток 0)22 \div 2 = 11 \text{ (остаток } 0\text{)} 11÷2=5 (остаток 1)11 \div 2 = 5 \text{ (остаток } 1\text{)} 5÷2=2 (остаток 1)5 \div 2 = 2 \text{ (остаток } 1\text{)} 2÷2=1 (остаток 0)2 \div 2 = 1 \text{ (остаток } 0\text{)} 1÷2=0 (остаток 1)1 \div 2 = 0 \text{ (остаток } 1\text{)}

Записываем остатки снизу вверх (от последнего к первому): 4510=101101245_{10} = 101101_2.

Прямой перевод между двоичной, восьмеричной и шестнадцатеричной системами

Основания 8 и 16 являются степенями двойки (8=238 = 2^3, 16=2416 = 2^4), поэтому между двоичной, восьмеричной и шестнадцатеричной системами можно переводить напрямую, без промежуточного перехода через десятичную систему.

Из двоичной в восьмеричную: разбейте двоичное число на группы по 3 цифры справа налево (при необходимости дополнив нулями слева) и замените каждую группу соответствующей восьмеричной цифрой.

Из двоичной в шестнадцатеричную: разбейте на группы по 4 цифры справа налево и замените каждую группу шестнадцатеричной цифрой.

Пример: переведите 1011012101101_2 в восьмеричную систему.

Разбиваем на группы по 3: 101  101→5  5101 \; 101 \to 5 \; 5

Ответ: 1011012=558101101_2 = 55_8

Пример: переведите 1011012101101_2 в шестнадцатеричную систему.

Разбиваем на группы по 4 справа налево, дополняя слева нулями: 0010  1101→2  D0010 \; 1101 \to 2 \; D

Ответ: 1011012=2D16101101_2 = 2D_{16}

Обратный перевод (из восьмеричной или шестнадцатеричной в двоичную) выполняется заменой каждой цифры на соответствующую группу из 3 или 4 двоичных цифр.

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

ДесятичнаяДвоичнаяВосьмеричнаяШестнадцатеричная
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Алгоритм перевода чисел

  1. Определите исходную и целевую системы счисления.
  2. Если перевод происходит из любой системы в десятичную — распишите число по степеням основания и сложите результаты.
  3. Если перевод происходит из десятичной в любую другую — делите число на основание новой системы, записывая остатки, до тех пор пока частное не станет равно нулю, а затем прочитайте остатки снизу вверх.
  4. Если обе системы (кроме десятичной) имеют основание, являющееся степенью двойки, — используйте прямой перевод через группы двоичных цифр без перехода через десятичную систему.
  5. Проверьте результат обратным переводом, если есть время.

Примеры решения

Пример 1. Переведите число 371037_{10} в двоичную систему.

37÷2=1837 \div 2 = 18 (ост. 1), 18÷2=918 \div 2 = 9 (ост. 0), 9÷2=49 \div 2 = 4 (ост. 1), 4÷2=24 \div 2 = 2 (ост. 0), 2÷2=12 \div 2 = 1 (ост. 0), 1÷2=01 \div 2 = 0 (ост. 1).

Ответ: 3710=100101237_{10} = 100101_2.

Пример 2. Переведите число 2D162D_{16} в десятичную систему.

2D16=2⋅161+13⋅160=32+13=452D_{16} = 2 \cdot 16^1 + 13 \cdot 16^0 = 32 + 13 = 45.

Ответ: 2D16=45102D_{16} = 45_{10}.

Пример 3. Переведите число 1101112110111_2 в шестнадцатеричную систему.

Разбиваем на группы по 4 справа налево: 0011  0111→3  70011 \; 0111 \to 3 \; 7.

Ответ: 1101112=3716110111_2 = 37_{16}.

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

Почему для перевода между двоичной, восьмеричной и шестнадцатеричной системами не нужно переходить через десятичную? Потому что основания 8 и 16 являются степенями числа 2 (8=238=2^3, 16=2416=2^4), поэтому каждая цифра восьмеричной или шестнадцатеричной системы однозначно соответствует фиксированной группе двоичных разрядов — это позволяет переводить числа напрямую, группируя цифры.

Что делать, если при разбиении на группы по 3 или 4 цифры не хватает? Нужно дополнить двоичное число незначащими нулями слева до тех пор, пока общее количество цифр не станет кратным 3 (для восьмеричной системы) или 4 (для шестнадцатеричной) — эти нули не влияют на значение числа.

Как быстро проверить правильность перевода? Стоит перевести полученный результат обратно в исходную систему счисления (например, через десятичную) и сравнить с первоначальным числом — если они совпадают, перевод выполнен верно.

Нужно ли запоминать шестнадцатеричные буквенные цифры A–F наизусть? Да, поскольку в шестнадцатеричной системе используются 16 цифр (0–9 и буквы A–F, обозначающие числа от 10 до 15), знание этого соответствия необходимо для быстрого перевода без постоянного обращения к таблице.

Похожие темы для изучения

  • Арифметические операции в позиционных системах счисления
  • Кодирование и измерение информации
  • Логические операции и таблицы истинности
  • Электронные таблицы: формулы и функции

Задачи для самостоятельного решения

  1. Переведите число 581058_{10} в двоичную систему.
  2. Переведите число 1F161F_{16} в десятичную систему.
  3. Переведите число 1011102101110_2 в восьмеричную систему.
  4. Переведите число 7468746_8 в двоичную систему.
  5. Переведите число 891089_{10} в шестнадцатеричную систему.
  6. Объясните, почему число 11111111211111111_2 равно FF16FF_{16}, не выполняя перевод через десятичную систему.