МатематикаАрифметика

Калькулятор двоичной системы счисления

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

Перевод числа
Допустимые символы зависят от выбранной системы
Показать пошаговое решение
Все калькуляторы раздела «Арифметика» (36) →

Что делает калькулятор двоичной системы

Инструмент выполняет полный набор операций с двоичными числами: четыре арифметические действия, перевод в десятичную, восьмеричную и шестнадцатеричную системы, побитовые операции (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):

ABC_inSumC_out
00000
00110
01010
01101
10010
10101
11001
11111

Простое правило: 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): старший байт по младшему адресу

Калькулятор оперирует значениями, порядок байт не влияет на результат арифметики, но важен при сериализации.

Типичные ошибки и как их избегать

  1. Потеря переноса при ручном сложении — всегда пишите перенос над следующим разрядом.
  2. Забыли инвертировать все биты при дополнительном коде — NOT применяется ко всему слову, включая ведущие нули.
  3. Смешали знаковое и беззнаковое сравнение — в коде if (a > b) при unsigned a, signed b происходит неявное приведение, результат может удивить.
  4. Сдвиг на ≥ ширину типа — в C/C++ это UB (undefined behavior), в Java/Python/JS — берётся модуль ширины (n % 32 или n % 64).
  5. Дробные числа в побитовых операциях — битовые операции определены только для целых. Калькулятор отбрасывает дробную часть или выдаёт ошибку.
  6. Округление при переводе дробей — 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⁶ бит (ограничение — память вкладки). Для учебных целей рекомендуем включать «Показать шаги» — так быстрее усваивается логика двоичной арифметики.

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

Как перевести десятичное число в двоичное вручную?
Последовательно делите число на 2 и записывайте остатки. Когда частное станет равно 0, выпишите остатки в обратном порядке — это и будет двоичное представление. Например, 13 ÷ 2 = 6 (ост.1), 6 ÷ 2 = 3 (ост.0), 3 ÷ 2 = 1 (ост.1), 1 ÷ 2 = 0 (ост.1) → 1101₂.
Как выполнять сложение двоичных чисел столбиком?
Складывайте разряды справа налево по правилам: 0+0=0, 0+1=1, 1+0=1, 1+1=0 с переносом 1 в следующий разряд. Перенос добавляется к сумме старшего разряда. Результат записывается в той же позиции.
Чем отличается побитовое И (AND) от логического И?
Побитовое AND (&) применяется к каждому паре бит операндов отдельно: 1&1=1, остальные комбинации дают 0. Логическое И (&&) в программировании работает с целыми значениями: ноль — ложь, ненулевое — истина, и возвращает true/false, а не число.
Как перевести дробное двоичное число в десятичное?
Целую часть переводите стандартным способом (сумма разрядов × 2ⁿ). Дробную — умножайте каждый бит на 2 в отрицательной степени позиции: первый после точки — 2⁻¹, второй — 2⁻² и так далее. Сложите обе части. Например, 10.11₂ = 1×2¹ + 0×2⁰ + 1×2⁻¹ + 1×2⁻² = 2 + 0 + 0.5 + 0.25 = 2.75₁₀.
Зачем нужны сдвиги влево и вправо в двоичной системе?
Сдвиг влево (<<) на n позиций умножает число на 2ⁿ, сдвиг вправо (>>) — делит на 2ⁿ (целочисленно). Это быстрее умножения/деления на процессоре и используется в низкоуровневом программировании, криптографии и работе с флагами.
Как работает вычитание в дополнительном коде?
Вычитание A − B заменяется на сложение A + (−B). Отрицательное число −B получают инверсией всех бит (замена 0↔1) и добавлением 1. Старший бит становится знаковым: 0 — положительное, 1 — отрицательное. Калькулятор выполняет это автоматически.
Можно ли использовать калькулятор для шестнадцатеричных чисел?
Да, калькулятор поддерживает перевод между двоичной, восьмеричной, десятичной и шестнадцатеричной системами. Для шестнадцатеричного ввода используйте цифры 0–9 и буквы A–F (регистр не важен). Результат показывается во всех системах одновременно.
В чём разница между беззнаковым и знаковым представлением?
Беззнаковое трактует все биты как величину (0…2ⁿ−1). Знаковое (в дополнительном коде) старший бит резервирует под знак: 0 — плюс, 1 — минус. Диапазон знакового n-битного числа: −2ⁿ⁻¹ … 2ⁿ⁻¹−1. Калькулятор работает с обоими режимами.