Калькулятор двоичной системы счисления
Бесплатный онлайн-калькулятор для двоичных чисел: сложение, вычитание, умножение, деление, перевод в десятичную и шестнадцатеричную системы, побитовые операции.
Похожие калькуляторы и статьи
- Калькулятор умножения чисел
- Калькулятор онлайн с решением
- Двоичный калькулятор
- Посчитать пример онлайн
- Калькулятор онлайн
- Сложить числа списком
Что делает калькулятор двоичной системы
Инструмент выполняет полный набор операций с двоичными числами: четыре арифметические действия, перевод в десятичную, восьмеричную и шестнадцатеричную системы, побитовые операции (AND, OR, XOR, NOT, сдвиги) и работу с дробными значениями. Результат выдаётся сразу во всех системах счисления с пошаговым разбором — удобно для проверки решений, обучения и отладки низкоуровневого кода.
Основы двоичной системы счисления
Двоичная система — позиционная с основанием 2. Используются две цифры: 0 и 1. Каждый разряд соответствует степени двойки, считая справа налево от нулевой:
1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀
Минимальная единица — бит (binary digit). В памяти и процессорах бит физически реализуется двумя стабильными состояниями: заряд/нет заряда, высокое/низкое напряжение, намагниченность/отсутствие. Поэтому вся цифровая техника работает в двоичном виде.
Для компактности программисты используют шестнадцатеричную систему (основание 16): одна hex-цифра = 4 бита (тетрада). Восьмеричная (основание 8) — 3 бита (триада) — встречается реже, в основном в старых архитектурах и правах доступа Unix.
Перевод между системами счисления
Десятичное → двоице (целая часть)
Алгоритм: делим на 2, записываем остатки, читаем снизу вверх.
Пример: 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₂
Двоичное → десятичное
Суммируем веса единичных бит:
101101₂ = 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 0 + 8 + 4 + 0 + 1 = 45₁₀
Быстрый способ — метод Горнера (слева направо):
result = 0
для каждой цифры d слева направо:
result = result × 2 + d
Для 101101: 0→1→2→5→11→22→45.
Дробные числа
Целую часть переводим как выше. Дробную — умножаем на 2, забираем целую часть, повторяем для остатка.
0.625₁₀ → ₂
0.625 × 2 = 1.25 → 1
0.25 × 2 = 0.5 → 0
0.5 × 2 = 1.0 → 1
→ 0.101₂
Проверка: 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 0.5 + 0 + 0.125 = 0.625 ✓
Не все десятичные дроби имеют конечное двоичное представление (пример: 0.1₁₀ = 0.0001100110011…₂). Калькулятор показывает период или округляет до заданной точности.
Быстрый перевод 2 ↔ 8 ↔ 16
Группируем биты от точки наружу:
- по 3 → восьмеричная цифра (000…111 → 0…7)
- по 4 → шестнадцатеричная цифра (0000…1111 → 0…F)
101101.101₂
целая: 10 1101 → дополняем слева нулями: 010 1101 → 2 5 → 25₈
дробная: 101 → дополняем справа: 101 000 → 5 0 → 50₈
→ 25.50₈
тетрады: 0010 1101 . 1010 → 2 D . A → 2D.A₁₆
Арифметика в двоичной системе
Сложение
Таблица истинности для одного разряда с учётом переноса из младшего (C_in):
| A | B | C_in | Sum | C_out |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Простое правило: 1+1=10 (0 в разряд, 1 в перенос). Пример:
10111 (23)
+ 1101 (13)
-------
100100 (36)
Вычитание
Прямое столбиковое вычитание с заимствованием: 0-1 требует занять 1 из старшего разряда (он становится 0, текущий — 2, в двоичной 2 = 10₂).
10100 (20)
- 1101 (13)
-------
0111 (7)
На практике в процессорах вычитание делают через дополнительный код: A − B = A + (~B + 1). Инверсия бит (NOT) + 1 даёт отрицательное значение. Калькулятор показывает оба способа.
Умножение
Аналогично школьному столбику, но таблица умножения тривиальна: 0×0=0, 0×1=0, 1×0=0, 1×1=1. Частичные произведения сдвигаются и складываются.
101 (5)
× 11 (3)
-----
101
101
-----
1111 (15)
Деление
Столбик: вычитаем делитель из текущего остатка (или сравниваем), ставим 1 в частное, если вычитаем, 0 — если нет. Приводим следующий бит делимого. Для дробного результата после целочисленной части добавляем нули к остатку и продолжаем.
1100 ÷ 11 (12 ÷ 3)
11 | 1100
- 11
----
00 → частное 100₂ = 4₁₀
Побитовые операции
Работают над каждым битом независимо. Основание — булева алгебра.
| Операция | Обозначение | Таблица (A, B) | Применение |
|---|---|---|---|
| AND | & | 1 только если 1 и 1 | Маскирование бит, проверка флагов |
| OR | ` | ` | 1 если хотя бы один 1 |
| XOR | ^ | 1 если биты разные | Инверсия выбранных бит, простое шифрование, сравнение |
| NOT | ~ | Инверсия каждого бита | Получение дополнительного кода, инверсия маски |
| << | сдвиг влево | Биты сдвигаются влево, справа дописываются 0 | Умножение на 2ⁿ, упаковка данных |
| >> | сдвиг вправо | Биты сдвигаются вправо (арифметический: знаковый бит копируется; логический: дописываются 0) | Деление на 2ⁿ, извлечение бит |
Примеры (8 бит для наглядности):
A = 10101100 (0xAC)
B = 11001010 (0xCA)
A & B = 10001000 (0x88)
A | B = 11101110 (0xEE)
A ^ B = 01100110 (0x66)
~A = 01010011 (0x53)
A << 2 = 10110000 (0xB0) = A × 4
A >> 2 = 00101011 (0x2B) = A ÷ 4 (логический)
Важно: в языках C/C++/Java/Python сдвиг правого знакового числа (signed) — арифметический (знаковый бит сохраняется), беззнакового (unsigned) — логический. В JavaScript все побитовые операции приводят к 32-битному знаковому int32.
Особенности представления чисел
Беззнаковое (unsigned)
Все биты — величина. Диапазон n бит: 0 … 2ⁿ−1.
8 бит: 0…255.
Знаковое в дополнительном коде (two’s complement)
Старший бит (MSB) — знак: 0 = +, 1 = −.
Диапазон n бит: −2ⁿ⁻¹ … 2ⁿ⁻¹−1.
8 бит: −128…+127.
Получение −X: инвертировать все биты X, прибавить 1.
+5 = 00000101
−5 = 11111010 + 1 = 11111011
Сложение в дополнительном коде работает одинаково для знаковых и беззнаковых — разница только в интерпретации результата и флагах переполнения (overflow vs carry).
Порядок байт (endianness)
При работе с многоразрядными числами в памяти важен порядок байт:
- Little-endian (x86, ARM): младший байт по младшему адресу
- Big-endian (сетевой порядок, некоторые MCU): старший байт по младшему адресу
Калькулятор оперирует значениями, порядок байт не влияет на результат арифметики, но важен при сериализации.
Типичные ошибки и как их избегать
- Потеря переноса при ручном сложении — всегда пишите перенос над следующим разрядом.
- Забыли инвертировать все биты при дополнительном коде — NOT применяется ко всему слову, включая ведущие нули.
- Смешали знаковое и беззнаковое сравнение — в коде
if (a > b)приunsigned a, signed bпроисходит неявное приведение, результат может удивить. - Сдвиг на ≥ ширину типа — в C/C++ это UB (undefined behavior), в Java/Python/JS — берётся модуль ширины (n % 32 или n % 64).
- Дробные числа в побитовых операциях — битовые операции определены только для целых. Калькулятор отбрасывает дробную часть или выдаёт ошибку.
- Округление при переводе дробей — 0.1₁₀ не представимо точно в двоичной. Для денежных расчётов используйте целые (копейки) или decimal-библиотеки.
Практический пример: парсинг IP-адреса
IPv4 — 32 бита, записанные четырьмя десятичными октетами. Задача: получить номер сети по адресу и маске.
IP: 192.168.1.45 → 11000000 10101000 00000001 00101101
Маска: 255.255.255.192 → 11111111 11111111 11111111 11000000
Сеть: IP & Маска → 11000000 10101000 00000001 00000000 = 192.168.1.0
Каждая операция делается побитово независимо. Калькулятор позволяет ввести IP как шестнадцатеричное C0A8012D, маску FFFFFFC0, выполнить AND и сразу увидеть результат в десятичных октетах.
Когда использовать калькулятор, а когда — встроенные средства языка
| Задача | Лучший инструмент |
|---|---|
| Быстрая проверка формулы, обучение, разбор ЕГЭ/ОГЭ | Онлайн-калькулятор (пошаговое решение) |
| Прототипирование алгоритмов, битовые трюки | Python REPL / JS Console (0b1010 ^ 0b1100) |
| Продакшн-код, высокая производительность | Компилируемые языки, интринсики SIMD |
| Работа с большими числами (>64 бит) | Python (int неограничен), BigInt в JS, GMP в C++ |
Горячие клавиши и удобства калькулятора
Enter— вычислитьBackspace— удалить последний символC/Escape— полная очистка- Клик по полю результата — копировать в буфер
- Переключатель «Показать шаги» — развернуть/свернуть пошаговый разбор
- Выбор основания ввода/вывода: 2, 8, 10, 16 (кнопки или клавиши
b,o,d,h)
Калькулятор работает полностью в браузере, данные не уходят на сервер. Поддерживает числа до 10⁶ бит (ограничение — память вкладки). Для учебных целей рекомендуем включать «Показать шаги» — так быстрее усваивается логика двоичной арифметики.