Двоичный калькулятор

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

01 калькулятор

Результаты обновляются при вводе. Ctrl/Cmd+Enter копирует основной результат.

Результат

    Показать решение

      Двоичный калькулятор складывает, вычитает, умножает и делит числа в системе с основанием 2, переводит между двоичной и десятичной системами и применяет побитовые AND, OR, XOR, NOT и сдвиги. Каждый результат включает десятичный эквивалент и разбор по столбцам, чтобы переносы и займы можно было проверить вручную. Ширину в битах можно задать для работы с дополнительным кодом или оставить неограниченной для точной арифметики без переполнения регистра.

      Все расчёты выполняются в браузере. Ничего из введённого не отправляется на сервер.

      Сложение, вычитание, умножение и деление двоичных чисел

      Concept diagram: Входы leads to Сложение, вычитание, умножение и деление… leads to РезультатВходыСложение, вычитание,умножение и деление…Результат
      Сложение, вычитание, умножение и деление двоичных чисел.

      Двоичная арифметика использует те же правила по столбцам, что и десятичная, но в каждом разряде только 0 или 1, а порог переноса равен 2, а не 10. Введите две двоичные строки, выберите операцию, и калькулятор вернёт результат в двоичном виде с десятичной проверкой рядом. Ведущие нули удаляются из вывода, если не выбрана ширина в битах.

      Сложение даёт перенос, когда сумма столбца равна 2 или больше. Вычитание занимает у следующего старшего бита, когда цифра уменьшаемого меньше. Умножение и деление следуют тем же длинным схемам, что и в десятичной системе, из сдвигов и сложений. Недопустимые цифры вроде 2 или A отклоняются сразу, потому что они не допустимы в base 2.

      Преобразование двоичного числа в десятичное

      Scale bar: 1 двоичное equals 1.43 десятичное1 двоичное1.43 десятичное
      Преобразование двоичного числа в десятичное.

      Позиционная запись превращает двоичную строку в десятичное целое суммированием каждого бита, умноженного на степень двойки. Крайний правый бит это 2⁰ (значение 1), следующий 2¹ (значение 2), затем 4, 8, 16 и так далее. Для 10111 разложение: 16 + 0 + 4 + 2 + 1 = 23.

      1 0 1 1 1
      │ │ │ │ └─ 1 × 2⁰ = 1
      │ │ │ └─── 1 × 2¹ = 2
      │ │ └───── 1 × 2² = 4
      │ └─────── 0 × 2³ = 0
      └───────── 1 × 2⁴ = 16
                         = 23

      Любая принятая двоичная строка переводится так. Группировка по нибблам из четырёх бит облегчает чтение разрядов вслух: 1010 1010 понятнее восьми подряд идущих цифр при проверке маски подсети или битового поля прав.

      Преобразование десятичного числа в двоичное

      Scale bar: 1 десятичное equals 1.4 двоичное1 десятичное1.4 двоичное
      Преобразование десятичного числа в двоичное.

      Повторное деление на 2 даёт двоичные цифры как остатки. Разделите десятичное значение на 2, запишите остаток (0 или 1), снова разделите частное и продолжайте, пока частное не станет нулём. Чтение остатков с конца к началу даёт двоичную форму.

      Для 23:

      ШагЧастноеОстаток
      23 ÷ 2111
      11 ÷ 251
      5 ÷ 221
      2 ÷ 210
      1 ÷ 201

      Чтение остатков снизу вверх даёт 10111. Калькулятор выполняет это преобразование в обе стороны и показывает обе формы вместе, чтобы опечатка в цифре была заметна до арифметического шага.

      Сложение 10101010 и 11001100

      Concept diagram: Входы leads to Сложение 10101010 и 11001100 leads to РезультатВходыСложение 10101010 и11001100Результат
      Сложение 10101010 и 11001100.

      Сложение 10101010 и 11001100 это рабочий пример столбцового сложения с переносами. В десятичной системе операнды 170 и 204, сумма 374, что в двоичном виде 101110110. Старые заметки с 110001110 были неверны; арифметика ниже даёт правильный результат.

      1 1 1 1 1 0 0 0     переносы
                  1 0 1 0 1 0 1 0   170
                + 1 1 0 0 1 1 0 0   204
                -----------------
                1 0 1 1 1 0 1 1 0   374

      Столбец за столбцом справа: 0+0=0, 1+0=1, 0+1=1, 1+1=0 перенос 1, 0+0+перенос=1, 1+0=1, 0+1=1, 1+1=0 перенос 1, и финальный перенос записывает девятый бит. Девятибитный результат 101110110 соответствует 256 + 0 + 64 + 32 + 16 + 0 + 4 + 2 + 0 = 374. Двоичный калькулятор показывает эту строку переносов для каждого сложения, чтобы ручная проверка совпала с выводом.

      Вычитание двоичных чисел с заёмом

      Concept diagram: Входы leads to Вычитание двоичных чисел с заёмом leads to РезультатВходыВычитание двоичныхчисел с заёмомРезультат
      Вычитание двоичных чисел с заёмом.

      Двоичное вычитание занимает, когда столбцу нужно взять 1 у нуля. Заём у следующего старшего бита превращает текущий 0 в 2 (двоичное 10), а дающий бит теряет 1. Если дающий тоже 0, заём распространяется, пока не найдётся 1.

      Пример: 1000 минус 0001.

      1 0 0 0
      - 0 0 0 1
      ---------
        0 1 1 1

      Крайний правый столбец занимает через три нуля. После цепочки заёмов каждый занятый столбец становится 1, а крайний левый бит, который одолжил, становится 0, остаётся 0111 (десятичное 7). При заданной ширине в битах, если результат ушёл бы в отрицательную область, калькулятор может показать обёртку дополнительного кода вместо неограниченной отрицательной величины. Неограниченный режим сохраняет знаковое целое точным без обёртки.

      Побитовые операции

      Concept diagram: Входы leads to побитовые операции leads to РезультатВходыпобитовые операцииРезультат
      Побитовые операции.

      Побитовые операторы действуют на каждый бит независимо, а не на строку как одно целое. AND возвращает 1 только там, где оба входа равны 1. OR возвращает 1, где любой вход равен 1. XOR возвращает 1, где биты различаются. NOT инвертирует каждый бит в выбранной ширине. Сдвиги перемещают биты и заполняют нулями или знаковым битом при арифметическом сдвиге вправо.

      ABANDORXOR
      00000
      01011
      10011
      11110

      Битовая маска очищает или сохраняет выбранные поля. value AND mask обнуляет каждый бит, где маска 0. value OR flag устанавливает биты. value XOR toggle переключает выбранные биты, не затрагивая остальные. Эти шаблоны встречаются в флагах прав, регистрах состояния и сетевой части IPv4-адреса при применении маски подсети.

      Представление отрицательных чисел в дополнительном коде

      Concept diagram: Входы leads to отрицательные числа в дополнительном коде leads to РезультатВходыотрицательные числа вдополнительном кодеРезультат
      Представление отрицательных чисел в дополнительном коде.

      Дополнительный код это стандартный способ хранения отрицательных целых в двоичном виде фиксированной ширины. Для n-битного регистра отрицание значения: инвертировать каждый бит и прибавить один. Старший бит это знаковый: 0 для неотрицательных, 1 для отрицательных. Диапазон для n бит: от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.

      В 8 битах +5 это 00000101. Инверсия даёт 11111010, плюс один даёт 11111011, что равно −5. Сложение 00000101 и 11111011 даёт 00000000 с переполнением-переносом из регистра, так проверяется отрицание. Без ширины нет фиксированного знакового бита, и дополнительный код не определён; калькулятор поэтому требует ширину (8, 16, 32 или 64) перед показом форм дополнительного кода.

      Переполнение возникает, когда истинный математический результат не помещается в выбранную ширину. Двоичный калькулятор помечает обёртку, чтобы безмолвно усечённый ответ не приняли за точный.

      Таблица разрядных весов в двоичной системе

      Number line from 0 to 100 with the value 39 marked025507510039
      Таблица разрядных весов в двоичной системе.

      Разрядные веса удваиваются на каждом шаге влево от двоичной точки. Запомнить первые восемь достаточно для большинства работы на уровне байта: 1, 2, 4, 8, 16, 32, 64, 128. Четыре бита составляют ниббл; восемь бит составляют байт. Шестнадцать бит это слово на многих архитектурах; 32 и 64 это распространённые размеры регистров сегодня.

      Индекс битаСтепеньЗначение
      02⁰1
      12
      24
      38
      42⁴16
      52⁵32
      62⁶64
      72⁷128

      Полный байт единиц, 11111111, это 255. Только старший бит, 10000000, это 128. Чтение значения как суммы установленных разрядных весов быстрее, чем перевод цифра за цифрой, когда таблица знакома, и развёрнутый вид калькулятора совпадает с этой мысленной проверкой.

      Практическое применение двоичной системы

      Concept diagram: Входы leads to двоичная система на практике leads to РезультатВходыдвоичная система напрактикеРезультат
      Практическое применение двоичной системы.

      Двоичная система встречается везде, где железо или протоколы раскрывают битовые поля. Маски подсетей это 32-битные шаблоны ведущих единиц. Режимы файлов Unix упаковывают биты чтения, записи и выполнения в девять бит прав. Цветовые каналы часто восьмибитные. Флаги CPU и регистры устройств упаковывают логическое состояние в отдельные биты, чтобы маска могла проверить или очистить их, не трогая соседей.

      Адреса памяти и машинные инструкции под каждым hex-дампом двоичны. При отладке перевод подозрительного слова флагов в двоичный вид и сопоставление с datasheet обычно быстрее, чем угадывание по десятичной форме. Калькулятор держит двоичный и десятичный виды связанными, чтобы этот цикл оставался честным.

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

      Как двоичное сложение даёт перенос?

      Перенос появляется, когда сумма столбца равна 2 или больше. Поскольку каждый разряд хранит только 0 или 1, сумма 2 записывает 0 и переносит 1 в следующий столбец; сумма 3 записывает 1 и переносит 1. Процесс идентичен десятичному переносу при 10, но с меньшим порогом.

      Как вручную перевести двоичное число в десятичное?

      Умножьте каждый бит на его степень двойки и сложите произведения. Крайний правый бит стоит 1, затем 2, 4, 8 и так далее. Для 10111 это 16 + 0 + 4 + 2 + 1 = 23. Калькулятор показывает то же разложение для каждого преобразования.

      Как вручную перевести десятичное число в двоичное?

      Делите число на 2 повторно и собирайте остатки. Каждый остаток это следующая двоичная цифра справа налево. Остановитесь, когда частное достигнет нуля, затем прочитайте остатки с конца к началу. Десятичное 23 становится 10111 этим методом.

      Что такое дополнительный код?

      Дополнительный код представляет отрицательные целые в фиксированной ширине битов инверсией битов величины и прибавлением единицы. Старший бит действует как знак. Сложение числа с его дополнительным кодом даёт ноль в этой ширине, поэтому процессоры используют его для вычитания.

      Что такое битовая маска?

      Битовая маска это двоичный шаблон для AND, OR или XOR, чтобы очистить, установить или переключить выбранные биты. AND с маской сохраняет биты, где маска 1, и обнуляет остальные. OR устанавливает биты. XOR переключает их. Маски встречаются в правах, флагах протоколов и аппаратных регистрах.

      В чём разница между сдвигом влево и умножением на два?

      Сдвиг влево на один разряд умножает беззнаковое значение на два, если биты не сдвигаются за пределы регистра. Сдвиг вправо на один делит на два и отбрасывает остаток. При фиксированной ширине биты, сдвинутые за край, теряются; неограниченный режим удлиняет строку.

      Почему ширина в битах важна для NOT и отрицания?

      NOT инвертирует каждый бит в регистре. Без определённой ширины нет конечного набора битов для инверсии, и операция бессмысленна. Отрицание в дополнительном коде тоже требует ширины, чтобы знаковый бит и поведение обёртки были определены. Выберите 8, 16, 32 или 64 под моделируемый регистр.

      Что такое ниббл?

      Ниббл это четыре бита, половина байта. Он чисто соответствует одной шестнадцатеричной цифре, поэтому hex-дампы и цветовые коды группируют биты по четверым. Разрядные веса в ниббле: 1, 2, 4 и 8, в сумме 15, когда все биты установлены.

      Может ли Двоичный калькулятор делить двоичные числа?

      Да. Деление возвращает частное в двоичном виде с десятичной проверкой рядом. Деление на ноль отклоняется. Остатки следуют правилам целочисленного деления, если для конкретной задачи не выбран режим большей точности.

      Отправляет ли калькулятор двоичный ввод на сервер?

      Нет. Вся арифметика и преобразование выполняются локально в браузере. Введённые значения не загружаются, что важно, когда строки из дампов памяти, ключей или внутренних адресов.

      Итог

      Двоичный калькулятор выполняет арифметику в base 2, переводит в десятичную систему и обратно через степени двойки и применяет побитовые AND, OR, XOR, NOT и сдвиги с необязательной шириной регистра. Сложение 10101010 и 11001100 даёт 101110110 (170 + 204 = 374), переносы показаны столбец за столбцом.

      Отрицание в дополнительном коде и побитовый NOT требуют ширины в битах; неограниченный режим сохраняет результаты математически точными. Разрядные веса, нибблы и байты перечислены, чтобы двоичные строки в масках, правах и флагах читались без угадывания.