Перейти к содержимому

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

Введите два двоичных числа и получите сумму, разность, произведение или частное — с переносами, заёмами, частичными произведениями и шагами деления в столбик, расписанными по колонкам. Переключитесь в побитовый режим, чтобы применить AND, OR, XOR, NOT, сдвиги и циклические сдвиги при 4–128 битах. Бесплатно, без регистрации, и ничего не покидает ваш браузер.

Вид операции

Только двоичные цифры, с необязательным минусом в начале. Пробелы и знаки подчёркивания игнорируются, поэтому 1011 0110 тоже работает.

Результат

1 0010

Двоичный

18

Десятичный

12

Шестнадцатеричный

22

Восьмеричный

5 бит

Длина

Ход вычислений

Сложение в столбик с переносами
Строка43210
Перенос на входе11010
A01101
B00101
Сумма10010

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

  1. 1. Выберите вид операции. Арифметика складывает, вычитает, умножает или делит. Побитовый режим работает с отдельными битами шаблонов фиксированной длины.
  2. 2. Введите числа. Используйте только 0 и 1. Можно ставить минус в начале, префикс 0b, пробелы и знаки подчёркивания — так что 1011 0110 читается как одно число.
  3. 3. Выберите разрядность (только для побитового режима). NOT, сдвиги и циклические сдвиги без разрядности не имеют смысла, поэтому калькулятор её запрашивает: 4, 8, 16, 32, 64 или 128 бит.
  4. 4. Читайте результат и ход вычислений. Ответ выводится в двоичном, десятичном, шестнадцатеричном и восьмеричном виде, а ход вычислений — в столбик под ним.

Как работает двоичное сложение

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

Четыре случая одного столбца
Сумма столбцаЗаписанный битПеренос
0 + 0 + 0 = 000
1 + 0 + 0 = 110
1 + 1 + 0 = 10 (2)01
1 + 1 + 1 = 11 (3)11

Возьмём 1101 (13) и 101 (5). Калькулятор дополняет оба числа до пяти столбцов и показывает перенос, приходящий в каждый из них, — 11010 слева направо, — что даёт 10010, то есть 18. Строка переносов — та часть, которую люди теряют при сложении вручную.

Вычитание, умножение и деление

Вычитание работает наоборот: когда в столбце нужно 1 − 1 − 1 или 0 − 1, он занимает 1 из столбца слева, который здесь равен 2. 1000 − 0011 показывает заём, проходящий через три столбца, и даёт 0101 (8 − 3 = 5). Если A меньше B, калькулятор вычитает меньшее из большего и ставит результату знак минус.

Умножение — это сдвиг и сложение. Каждая единица в множителе даёт копию множимого, сдвинутого влево на позицию этого бита, а ноль ничего не даёт. Для 1011 × 101 (11 × 5) единицы стоят на позициях 0 и 2, поэтому частичные произведения — 1011 и 101100, а их сумма — 110111, то есть 55.

Деление — это деление в столбик с очень простым шагом угадывания. Сносите по одному биту делимого: если делитель помещается в то, что у вас есть, вычтите его и запишите 1 в частное, иначе запишите 0. 1100100 ÷ 111 (100 ÷ 7) даёт частное 1110 (14) и остаток 10 (2). Для отрицательных операндов частное усекается к нулю, а остаток принимает знак A — как в C, Java и JavaScript.

Побитовые операции при выбранной разрядности

Побитовые операции над двумя входами
ABANDORXORNANDNORXNOR
00000111
01011100
10011100
11110001

При 1100 и 1010 в 4 битах AND даёт 1000, OR даёт 1110, а XOR даёт 0110. NOT переворачивает каждый бит в пределах разрядности, поэтому тот же 1100 становится 0011 в 4 битах, но 11110011 в 8 битах — именно поэтому разрядность важна.

Левый сдвиг на n сдвигает каждый бит на n позиций вверх и заполняет освободившиеся места нулями; биты, выходящие за верхний край, теряются, и калькулятор их перечисляет. Логический правый сдвиг заполняет освободившиеся места нулями. Арифметический правый сдвиг копирует старший бит, поэтому отрицательное число остаётся отрицательным: 10110110, сдвинутое вправо на 2, даёт 00101101 логически, но 11101101 (−19) арифметически. Циклические сдвиги возвращают выпавшие с одного конца биты на другой конец, поэтому ничего не теряется.

В арифметическом режиме нет переполнения

Арифметика здесь точна при любой длине, поэтому 11111111 + 1 — это 100000000, а не 0. Реальное оборудование хранит фиксированное число битов и переполняется. Чтобы увидеть такое поведение и диапазоны знаковых чисел, которые с ним связаны, используйте калькулятор дополнения до двух.

Частые ошибки

  • Забыть перенос в самый левый столбец. Сложение двух 8-битных чисел может дать 9-битный ответ. Калькулятор сохраняет лишний столбец.
  • Путать логический и арифметический правый сдвиг. Они совпадают для положительных чисел и расходятся для любого шаблона со старшим битом 1. Языки различаются: в Java >> арифметический, а >>> логический; в C поведение >> для отрицательного знакового значения зависит от компилятора (в распространённых — арифметическое).
  • Случайно читать шаблон бит как знаковое число. 11110011 — это 243 без знака и −13 в дополнительном коде. Результаты побитовых операций показывают оба значения, чтобы вы могли понять, какое имеете в виду.
  • Считать, что NOT не зависит от разрядности. В неограниченном целом NOT от 12 равен −13. В фиксированной разрядности это дополняющий шаблон, который и возвращает калькулятор.

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

Как складывать двоичные числа?
Работайте от самого правого столбца влево, складывая два бита и перенос. Сумма 0 или 1 записывается как есть; сумма 2 записывается как 0 с переносом 1, а сумма 3 — как 1 с переносом 1. Например, 1101 + 101 = 10010. Калькулятор показывает перенос в каждый столбец.
Как вычитать двоичные числа?
Вычитайте столбец за столбцом справа. Если в столбце получилось бы меньше нуля, займите 1 из следующего столбца слева, что добавляет 2 к текущему столбцу. Если второе число больше, вычитайте в обратном порядке и поставьте минус перед ответом. 1000 − 11 = 101 (8 − 3 = 5).
В чём разница между логическим и арифметическим правым сдвигом?
Логический правый сдвиг заполняет освободившиеся старшие биты нулями, поэтому он трактует шаблон как беззнаковое число. Арифметический правый сдвиг копирует исходный старший бит, поэтому отрицательное число в дополнительном коде остаётся отрицательным. Оба делят значение пополам, но только арифметический сдвиг корректно обрабатывает отрицательные значения.
Что делают AND, OR и XOR?
Они сравнивают два шаблона бит столбец за столбцом. AND даёт 1, только когда оба бита равны 1; OR даёт 1, когда хотя бы один бит равен 1; XOR даёт 1, когда ровно один бит равен 1. AND используют, чтобы маскировать биты, OR — чтобы устанавливать биты, а XOR — чтобы инвертировать их или искать различия.
Может ли калькулятор работать с отрицательными двоичными числами?
В арифметическом режиме — да: поставьте минус перед числом, и правила знаков применятся к точному результату. Побитовый режим принимает обычные шаблоны бит, потому что шаблон отрицательного числа зависит от разрядности. Чтобы найти шаблон отрицательного значения, используйте калькулятор дополнения до двух.
Насколько большое двоичное число можно ввести?
Фиксированного предела нет, потому что арифметика использует целые числа произвольной точности. Столбцовый ход вычислений рисуется для операндов до 64 бит; дальше вы всё равно получите точный результат без таблицы шагов. Побитовые операции ограничены выбранной разрядностью — до 128 бит.

Похожие инструменты

Ещё в разделе «Данные, разметка и код»