Двоичная в десятичную: как конвертировать
Алгоритм перевода binary to decimal, степени двойки, примеры, использование в программировании.
Нужен прямо сейчас? Инструмент для этой задачи:
Введение
Перевод двоичного числа в десятичное — одна из первых задач, с которой сталкивается начинающий программист. Этот навык необходим для понимания того, как компьютер хранит и обрабатывает данные, как работают побитовые операции и почему 0b10000000 и 128 — это одно и то же число. В статье мы разберём алгоритм перевода binary to decimal, рассмотрим практические примеры и научимся выполнять преобразование в уме за секунды.
Что такое двоичная и десятичная системы
Десятичная система привычна нам с детства: она использует десять цифр от 0 до 9, а каждый разряд числа умножается на степень десятки. Двоичная система — это способ записи чисел с помощью двух знаков, 0 и 1, где каждый разряд соответствует степени двойки.
| Система | Основание | Цифры | Пример |
|---|---|---|---|
| Десятичная | 10 | 0–9 | 198 = 1·10² + 9·10¹ + 8·10⁰ |
| Двоичная | 2 | 0, 1 | 11000110 = 1·2⁷ + 1·2⁶ + 0·2⁵ + … |
Компьютеры «думают» в двоичной системе, потому что цифровые схемы строятся на двух устойчивых состояниях: есть сигнал или нет сигнала. Человеку же удобнее работать с десятичными числами, поэтому перевод между системами выполняется постоянно — явно или неявно.
Алгоритм перевода двоичного числа в десятичное
Чтобы перевести двоичное число в десятичное, нужно каждую цифру умножить на соответствующую степень двойки и сложить результаты. Степени двойки отсчитываются справа налево, начиная с нулевой. Проще говоря:
двоичное число: 1 0 1 1 0 1
степени двойки: 2⁵ 2⁴ 2³ 2² 2¹ 2⁰
значения: 32 0 8 4 0 1
Сумма: 32 + 0 + 8 + 4 + 0 + 1 = 45Таким образом, 101101₂ = 45₁₀. Алгоритм работает для любого количества разрядов и не требует ни деления, ни сложных вычислений — достаточно знать степени двойки до 2¹⁰ или 2¹⁶.
Таблица степеней двойки
| Степень | Значение | Степень | Значение |
|---|---|---|---|
| 2⁰ | 1 | 2⁸ | 256 |
| 2¹ | 2 | 2⁹ | 512 |
| 2² | 4 | 2¹⁰ | 1024 |
| 2³ | 8 | 2¹¹ | 2048 |
| 2⁴ | 16 | 2¹² | 4096 |
| 2⁵ | 32 | 2¹³ | 8192 |
| 2⁶ | 64 | 2¹⁴ | 16384 |
| 2⁷ | 128 | 2¹⁶ | 65536 |
Практические примеры
Пример 1: 8-битное число
Переведём 11010110 в десятичную систему. Пронумеруем разряды справа налево от 0 до 7 и сложим значения, где стоит единица:
11010110₂
= 1·2⁷ + 1·2⁶ + 0·2⁵ + 1·2⁴ + 0·2³ + 1·2² + 1·2¹ + 0·2⁰
= 128 + 64 + 0 + 16 + 0 + 4 + 2 + 0
= 214₁₀Пример 2: 16-битное число
Переведём 1011000101100. Здесь пригодится таблица степеней двойки, чтобы не запутаться в разрядах:
1011000101100₂
Единицы стоят в разрядах: 12, 10, 9, 5, 3, 2
= 2¹² + 2¹⁰ + 2⁹ + 2⁵ + 2³ + 2²
= 4096 + 1024 + 512 + 32 + 8 + 4
= 5676₁₀Пример 3: дробное двоичное число
Дробная часть числа использует отрицательные степени двойки. Например, 101.101 переводится так:
101.101₂
= 1·2² + 0·2¹ + 1·2⁰ + 1·2⁻¹ + 0·2⁻² + 1·2⁻³
= 4 + 0 + 1 + 0.5 + 0 + 0.125
= 5.625₁₀Обратный перевод: десятичная в двоичную
Для перевода десятичного числа в двоичное используется метод последовательного деления на 2. На каждом шаге мы делим число на 2 и записываем остаток (0 или 1). Остатки, прочитанные снизу вверх, образуют двоичное представление.
Переведём 45 в двоичную систему:
45 / 2 = 22, остаток 1
22 / 2 = 11, остаток 0
11 / 2 = 5, остаток 1
5 / 2 = 2, остаток 1
2 / 2 = 1, остаток 0
1 / 2 = 0, остаток 1
Читаем остатки снизу вверх: 101101Получаем 45₁₀ = 101101₂ — тот же результат, что и в обратном направлении. Для практики используйте наш конвертер из десятичной в двоичную, чтобы проверять вычисления.
Перевод в коде
В языках программирования перевод выполняется встроенными функциями. В JavaScript этоparseInt с указанием основания и метод toString:
// Двоичная → десятичная
parseInt('11010110', 2); // 214
0b11010110; // 214 (литерал)
// Десятичная → двоичная
(214).toString(2); // "11010110"
// Проверка диапазона 8-битного беззнакового
const byte = 214 & 0xFF; // 214
const signed = byte > 127 ? byte - 256 : byte; // -42В Python для перевода используются функции int(s, 2) и bin(n), в C# —Convert.ToInt32(s, 2) и Convert.ToString(n, 2). Все они работают по одинаковому принципу и опираются на алгоритм, описанный выше.
Где применяется перевод binary to decimal
- Побитовые операции — флаги и маски часто задаются в двоичном или шестнадцатеричном виде, а результат нужно интерпретировать как десятичное число.
- Сетевые протоколы — IP-адреса, маски подсетей и флаги TCP-заголовков хранятся в двоичном виде.
- Кодирование цветов — каждый канал RGB описывается 8 битами, что даёт диапазон 0–255.
- Анализ дампов памяти — отладчики показывают содержимое памяти в hex, который легко переводится в двоичное представление для побитового анализа.
- Криптография и хеширование — битовые операции лежат в основе алгоритмов SHA, MD5 и других хеш-функций.
Лайфхаки: как считать в уме
Опытные разработчики читают небольшие двоичные числа без калькулятора. Главные ориентиры, которые стоит запомнить: 0b1000 = 8, 0b10000 = 16, 0b10000000 = 128,0b11111111 = 255. Чтобы быстро прикинуть значение, найдите старшую единицу — это максимальная степень двойки, а дальше просто добавьте оставшиеся биты.
Полезен приём «дополнения до круглого»: например, 11111111 = 256 − 1 = 255,11111111 11111111 = 65536 − 1 = 65535. Так удаётся мгновенно переводить «сплошные» единицы в десятичные значения.
Связь двоичной системы с восьмеричной и шестнадцатеричной
Двоичная запись неудобна для восприятия, поэтому программисты часто используют более компактные системы — восьмеричную (по 3 бита на цифру) и шестнадцатеричную (по 4 бита). Эти системы являются «натуральными» представлениями двоичного кода: любую двоичную строку можно разбить на группы одинаковой длины справа налево и заменить каждую группу соответствующей цифрой.
Двоичное: 1010 0111 1100 1101
Группы по 4 → hex: A 7 C D = 0xA7CD = 42957
Группы по 3 → oct: 1 010 011 111 001 101
1 2 3 7 1 5 = 0o123715Знание этого приёма помогает быстро «читать» битовые маски, IP-адреса, цветовые значения и флаги состояния. Подробнее о системах счисления см. в нашей статье «Системы счисления: двоичная, восьмеричная, шестнадцатеричная».
Знаковые и беззнаковые числа
В памяти компьютера число хранится как последовательность битов, и интерпретация этих битов зависит от типа данных. Беззнаковое 8-битное число принимает значения от 0 до 255. Знаковое число в дополнительном коде (two's complement) использует старший бит как знаковый: при единичном значении число считается отрицательным.
Биты: 11111111
unsigned: 255
signed: -1 (в дополнительном коде)
Биты: 10000000
unsigned: 128
signed: -128Это объясняет, почему при сложении 127 + 1 в 8-битной знаковой переменной получается −128 — происходит переполнение, и значение «переворачивается» в отрицательную часть диапазона. Аналогичные эффекты возникают и в 32-битных счётчиках — например, в проблеме 2038 года, когда timestamp переполняется.
Заключение
Перевод двоичного числа в десятичное — это базовый навык, без которого не обойтись при работе с низкоуровневым кодом, сетями и побитовыми операциями. Алгоритм предельно прост: умножаем каждый бит на соответствующую степень двойки и складываем результаты. Главное — запомнить степени двойки хотя бы до 2¹⁶ и не путать направление нумерации разрядов.
В этой статье мы разобрали не только классический алгоритм, но и родственные темы: обратный перевод методом последовательного деления, работу с дробными двоичными числами, знаковое представление в дополнительном коде и связь двоичной системы с восьмеричной и шестнадцатеричной. Эти знания пригодятся при чтении дампов памяти, отладке побитовых масок и работе с сетевыми протоколами — там, где привычные десятичные числа встречаются реже, чем их бинарные и hex-представления.
Для регулярной работы используйте наш конвертер двоичных чисел в десятичные — он экономит время и помогает избежать ошибок при ручном счёте. А если нужно перевести число в обратную сторону, воспользуйтесь инструментом «десятичная в двоичную».
Попробуйте эти инструменты
Похожие статьи
Системы счисления: двоичная, восьмеричная, шестнадцатеричная
Позиционные системы счисления, конвертация между ними, использование в программировании.
Римские цифры: таблица и правила записи
Римская система счисления, символы, правила, запись больших чисел, история и современное использование.
Калькулятор процентов: как считать проценты
Виды расчёта процентов: от числа, процентное изменение, скидки, налоги, примеры.
URL parser: разбор адресов веб-страниц
Структура URL: protocol, host, path, query, fragment. Как парсить URL в JavaScript.