Что такое калькулятор побитового XOR?
Калькулятор побитового XOR (исключающего ИЛИ) берёт два целых числа и объединяет их бит за битом. В каждом разряде выходной бит равен 1, если входные биты различаются, и 0, если они совпадают. Это одна из базовых операций в программировании, цифровой логике, криптографии и при обнаружении ошибок.
Как пользоваться
Введите первое целое число (A) и второе целое число (B), затем нажмите кнопку расчёта. Калькулятор покажет результат XOR в десятичном виде, а также его двоичное и шестнадцатеричное представление, чтобы вы могли проверить вычисление бит за битом. Принимаются как положительные, так и отрицательные числа.
Разбор формулы
В большинстве языков программирования XOR записывается как A ^ B, а в математической нотации — как \( \text{A} \oplus \text{B} \). Таблица истинности для одного бита выглядит так: \( 0 \oplus 0 = 0 \), \( 0 \oplus 1 = 1 \), \( 1 \oplus 0 = 1 \), \( 1 \oplus 1 = 0 \). Операция применяется к каждой паре битов независимо. Полезные свойства: A ^ A = 0 и A ^ 0 = A — именно поэтому XOR используют для обмена значениями переменных и переключения флагов.
Пример с разбором
Возьмём A = 12 и B = 10. В двоичном виде \( 12 = 1100 \), а \( 10 = 1010 \). Сравним каждый разряд: \( 1 \oplus 1 = 0 \), \( 1 \oplus 0 = 1 \), \( 0 \oplus 1 = 1 \), \( 0 \oplus 0 = 0 \) — получаем \( 0110 = 6 \). Значит, \( 12 \oplus 10 = 6 \).
Частые вопросы
Что означает XOR? Исключающее ИЛИ — истина только тогда, когда ровно один из двух входов истинен (равен 1).
Почему XOR применяют в криптографии? Потому что наложение XOR с ключом обратимо: повторное применение того же ключа восстанавливает исходные данные (\( \text{A} \oplus \text{K} \oplus \text{K} = \text{A} \)).
Работает ли калькулятор с отрицательными числами? Да. Отрицательные значения представляются в дополнительном коде (two's complement), поэтому для них в двоичном виде может отображаться большое количество битов.
Сравнение побитовых операций
Каждая побитовая операция работает с одним битом за раз. Для каждой пары входных битов \(A\) и \(B\) операция выдает один выходной бит. В таблице ниже показана полная таблица истинности для одного бита шести наиболее распространённых операций. XOR (исключающее ИЛИ, записываемое как \(A \oplus B\)) выдает 1 только когда два входных бита различаются.
| A | B | AND (A&B) | OR (A|B) | XOR (A^B) | NAND ~(A&B) | NOR ~(A|B) | XNOR ~(A^B) |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
Обратите внимание, что XOR является точным дополнением XNOR, и что XOR равен 1 ровно в двух строках, где входные данные отличаются. Это свойство «детектора различий» делает XOR полезным для проверок чётности, простого шифрования и переключения битов.
XOR для распространённых пар входных данных
В следующей таблице обработано несколько представительных пар через операцию побитового XOR, показывая каждый операнд в двоичном виде, а затем результат в десятичном, двоичном и шестнадцатеричном видах. XOR выполняется побитово: выравните два двоичных числа и выведите 1 везде, где биты различаются.
| A | B | A (двоичное) | B (двоичное) | A ^ B (десятичное) | A ^ B (двоичное) | A ^ B (шестнадцатеричное) |
|---|---|---|---|---|---|---|
| 5 | 3 | 0101 | 0011 | 6 | 0110 | 0x6 |
| 255 | 15 | 11111111 | 00001111 | 240 | 11110000 | 0xF0 |
| 12 | 12 | 1100 | 1100 | 0 | 0000 | 0x0 |
| 7 | 0 | 0111 | 0000 | 7 | 0111 | 0x7 |
| 10 | 6 | 1010 | 0110 | 12 | 1100 | 0xC |
| -1 | 1 | …11111111 | …00000001 | -2 | …11111110 | 0x…FE |
Два закономерности выделяются. Когда операнд равен 0, XOR возвращает другой операнд неизменённым (\(7 \oplus 0 = 7\)). Когда оба операнда одинаковы, XOR возвращает 0 (\(12 \oplus 12 = 0\)). Отрицательный пример использует представление в дополнительном коде: \(-1\) содержит все биты, равные 1, поэтому XOR с любым значением инвертирует каждый бит (это эквивалентно побитовому НЕ), давая \(-1 \oplus 1 = -2\).