Как перевести двоичное число в десятичное
Чтобы перевести двоичное число в десятичное, нужно каждую цифру (бит) умножить на 2 в степени, соответствующей её позиции (начиная с 0 справа налево), и сложить полученные результаты. Например, двоичное число 101 равно $1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 4 + 0 + 1 = 5$ в десятичной системе.
Этот метод является фундаментальным для понимания работы компьютеров, сетевой адресации и низкоуровневого программирования. Ниже подробно разобран алгоритм, способы ускорения расчётов и работа с дробными числами.
Краткая суть: Двоичная система использует основание 2. Позиция каждой единицы определяет её «вес» — степень двойки. Сумма весов всех единиц даёт десятичное значение.
Основной алгоритм перевода
Десятичная система, которой мы пользуемся в жизни, имеет основание 10. Двоичная — основание 2. В ней используются только две цифры: 0 и 1.
Пошаговая инструкция
- Запишите двоичное число.
- Пронумеруйте позиции битов справа налево, начиная с нуля. Это будут показатели степени для числа 2.
- Умножьте каждый бит на $2$ в степени его позиции.
- Если бит равен
0, результат умножения всегда будет0. - Если бит равен
1, результатом будет соответствующая степень двойки.
- Если бит равен
- Сложите все полученные значения.
Пример разбора
Переведём число 1101 в десятичную систему.
| Позиция (степень) | 3 | 2 | 1 | 0 | | :--- | :-: | :-: | :-: | :-: | | Бит | 1 | 1 | 0 | 1 | | Расчёт | $1 \cdot 2^3$ | $1 \cdot 2^2$ | $0 \cdot 2^1$ | $1 \cdot 2^0$ | | Значение | 8 | 4 | 0 | 1 |
Сумма: $8 + 4 + 0 + 1 = 13$. Ответ: $1101_2 = 13_{10}$.
Таблица степеней двойки для быстрого счёта
Для ускорения ручных вычислений полезно запомнить первые степени двойки. Это избавит от необходимости возводить 2 в степень каждый раз.
| Степень ($n$) | Значение ($2^n$) | Примечание |
|---|---|---|
| 0 | 1 | Начало отсчёта |
| 1 | 2 | |
| 2 | 4 | |
| 3 | 8 | |
| 4 | 16 | Часто используется в байтах |
| 5 | 32 | |
| 6 | 64 | |
| 7 | 128 | Максимальное значение одного байта (без знака) — 255 |
| 8 | 256 | |
| 9 | 512 | |
| 10 | 1024 | Килобайт (в информатике) |
Лайфхак: Если вам нужно быстро оценить порядок числа, найдите старшую единицу (самую левую). Число будет немного больше, чем значение этой степени двойки. Например, в числе 100000 старшая единица стоит на позиции 5 ($2^5=32$). Значит, число чуть больше 32 (на самом деле ровно 32, так как остальные биты нули).
Перевод дробных двоичных чисел
Если в двоичной записи есть запятая (или точка), алгоритм меняется лишь тем, что степени для дробной части становятся отрицательными.
Правило нумерации:
- Целая часть нумеруется справа налево: $0, 1, 2...$
- Дробная часть нумеруется слева направо от запятой: $-1, -2, -3...$
Пример: $10.11_2$
-
Целая часть (
10):- $1 \cdot 2^1 = 2$
- $0 \cdot 2^0 = 0$
- Сумма целой части: $2$.
-
Дробная часть (
.11):- Первый бит после запятой: $1 \cdot 2^{-1} = 1 \cdot 0.5 = 0.5$
- Второй бит после запятой: $1 \cdot 2^{-2} = 1 \cdot 0.25 = 0.25$
- Сумма дробной части: $0.5 + 0.25 = 0.75$.
-
Итог: $2 + 0.75 = 2.75$. Ответ: $10.11_2 = 2.75_{10}$.
Важно: Не все десятичные дроби можно точно представить в двоичной системе конечным набором цифр (аналогично тому, как $1/3$ в десятичной системе превращается в бесконечную $0.333...$). При обратном переводе (из десятичной в двоичную) это может приводить к ошибкам округления в программировании.
Альтернативный метод: Схема Горнера
Для длинных чисел удобнее использовать метод последовательного умножения (схема Горнера). Он позволяет считать «в уме», двигаясь слева направо.
Алгоритм:
- Начните с первого бита (самого левого).
- Умножьте текущее значение на 2 и прибавьте следующий бит.
- Повторяйте шаг 2 до конца числа.
Пример для $1101_2$:
- Берём первый бит: 1
- $1 \cdot 2 + 1 (\text{следующий бит}) = 3$
- $3 \cdot 2 + 0 (\text{следующий бит}) = 6$
- $6 \cdot 2 + 1 (\text{последний бит}) = 13$
Результат: 13. Этот метод хорош тем, что не требует запоминания степеней двойки и удобен для программной реализации.
Частые ошибки при переводе
- Неверный отсчёт позиций. Самая распространённая ошибка — начинать нумерацию степеней с 1 или считать слева направо. Помните: младший разряд (справа) всегда имеет степень 0.
- Игнорирование нулей. Нули не влияют на сумму, но они занимают позиции. Пропуск позиции сбивает нумерацию степеней для всех последующих единиц.
- Путаница с дробной частью. Часто забывают, что степени после запятой отрицательные, и пытаются считать их как положительные ($2^1, 2^2$), получая завышенный результат.
- Опечатки в исходных данных. В двоичной системе могут быть только 0 и 1. Если вы встретили цифру 2 или выше, значит, исходное число записано неверно или это не двоичная система.
FAQ
Как быстро перевести большое двоичное число? Разбейте число на группы по 4 бита (тетрады) справа налево. Каждую тетраду переведите в шестнадцатеричную цифру (0–F), а затем используйте калькулятор или таблицу для перевода из HEX в DEC. Это быстрее, чем считать степени двойки для 20+ бит.
Почему компьютеры используют двоичную систему? Технически проще реализовать два устойчивых состояния электрического сигнала: «есть ток» (1) и «нет тока» (0). Это обеспечивает высокую надёжность хранения и обработки данных по сравнению с системами, имеющими больше оснований.
Можно ли перевести отрицательные двоичные числа? Да, но обычно используется дополнительный код. Старший бит указывает на знак. Для перевода такого числа в десятичное нужно сначала инвертировать биты, прибавить 1, перевести полученное положительное число обычным способом и добавить знак минус.
Есть ли онлайн-калькуляторы для проверки?
Да, любой инженерный калькулятор в режиме «Программист» (Programmer mode) поддерживает конвертацию между BIN, DEC, OCT и HEX. В Python это делается функцией int('1010', 2).