Перевод между системами счисления
Перевод чисел из одной системы счисления в другую – базовая задача в информатике и программировании. Будь то перевод IP-адреса из десятичного формата в двоичный, работа с шестнадцатеричными кодами цветов или решение школьных задач по информатике, калькулятор систем счисления позволит быстро получить нужный результат и избежать ошибок в вычислениях.
Калькулятор выше поддерживает перевод целых и дробных чисел между наиболее востребованными системами счисления: двоичной (base-2), восьмеричной (base-8), десятичной (base-10) и шестнадцатеричной (base-16). Расчет производится мгновенно.
Как посчитать системы счисления: основные методы перевода
Система счисления (СС) определяет способ записи чисел с помощью заданного набора символов (алфавита). В позиционных системах, к которым относятся двоичная, восьмеричная, десятичная и шестнадцатеричная, вес каждой цифры зависит от ее позиции (разряда) в числе.
Из любой системы в десятичную
Чтобы перевести число из любой позиционной системы в десятичную, необходимо представить его в виде суммы произведений цифр числа на основание исходной системы счисления, возведенное в степень разряда. Разряды нумеруются справа налево, начиная с нуля (для целой части числа).
Пример: Переведем двоичное число $1011_2$ в десятичную систему: $1011_2 = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11_{10}$
Пример: Переведем шестнадцатеричное число $2A_{16}$ в десятичную систему (помним, что A = 10): $2A_{16} = 2 \times 16^1 + 10 \times 16^0 = 32 + 10 = 42_{10}$
Из десятичной в любую другую
Для перевода целого десятичного числа в другую систему счисления используется метод последовательного деления столбиком. Исходное число делится нацело на основание целевой системы. Полученное частное снова делится на основание, и так до тех пор, пока частное не станет равным нулю. Искомое число формируется из остатков от деления, записанных в обратном порядке (начиная с последнего частного).
Пример: Переведем десятичное число $43_{10}$ в двоичную систему (основание 2):
- 43 / 2 = 21, остаток: 1
- 21 / 2 = 10, остаток: 1
- 10 / 2 = 5, остаток: 0
- 5 / 2 = 2, остаток: 1
- 2 / 2 = 1, остаток: 0
- 1 / 2 = 0, остаток: 1
Читаем остатки снизу вверх: $101011_2$. Таким образом, $43_{10} = 101011_2$.
Быстрый перевод между двоичной, восьмеричной и шестнадцатеричной СС
Основания 2, 8 и 16 математически связаны ($8 = 2^3$, $16 = 2^4$). Это позволяет осуществлять перевод между ними гораздо проще и быстрее, без промежуточного перевода в десятичную систему, используя метод триад и тетрад.
- Триада – группа из трёх двоичных цифр (байт). Позволяет кодировать числа от 0 до 7 (восьмеричная система).
- Тетрада – группа из четырёх двоичных цифр. Позволяет кодировать числа от 0 до 15 (шестнадцатеричная система).
Связь с двоичной системой (триады и тетрады)
Для перевода из восьмеричной или шестнадцатеричной системы в двоичную, каждую цифру исходного числа заменяют соответствующей ей двоичной триадой (для 8-ричной) или тетрадой (для 16-ричной). Если двоичный эквивалент содержит меньше цифр, он дополняется незначащими нулями слева.
Таблица соответствия:
| Десятичная | Двоичная (тетрада) | Восьмеричная | Шестнадцатеричная |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | - | 8 |
| 9 | 1001 | - | 9 |
| 10 | 1010 | - | A |
| 11 | 1011 | - | B |
| 12 | 1100 | - | C |
| 13 | 1101 | - | D |
| 14 | 1110 | - | E |
| 15 | 1111 | - | F |
Как переводить с помощью таблиц?
Пример 1: Перевод из шестнадцатеричной в двоичную. Дано число: $B5_{16}$. Смотрим в таблицу: $B = 1011$, $5 = 0101$. Результат: $10110101_2$.
Пример 2: Перевод из двоичной в восьмеричную. Дано число: $1101011_2$. Разбиваем на триады справа налево: $001$ $101$ $011$ (добавили нули слева для полной триады). Смотрим в таблицу: $001 = 1$, $101 = 5$, $011 = 3$. Результат: $153_8$.
Для прямого перевода между восьмеричной и шестнадцатеричной системами проще всего использовать двоичную систему в качестве промежуточного этапа: сначала перевести число в двоичный код, а затем перегруппировать разряды.