Что такое операция XOR и как она работает. Какие основные свойства имеет XOR. Чем XOR отличается от обычного логического ИЛИ. Где применяется операция исключающего ИЛИ.
Что такое XOR и как работает эта логическая операция
XOR (исключающее ИЛИ) — это логическая операция, которая возвращает истинный результат, если ровно один из двух операндов истинен, и ложный в противном случае. Работает XOR следующим образом:
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
То есть результат XOR равен 1 только в том случае, если входные биты различны. Это ключевое отличие от обычной операции ИЛИ.
Основные свойства и особенности операции XOR
XOR обладает рядом важных свойств, которые обуславливают его широкое применение:
- Коммутативность: A XOR B = B XOR A
- Ассоциативность: (A XOR B) XOR C = A XOR (B XOR C)
- Самообратимость: A XOR A = 0
- Нейтральный элемент 0: A XOR 0 = A
Благодаря свойству самообратимости, XOR часто используется в криптографии и для обратимых преобразований данных.

Отличия XOR от обычной операции логического ИЛИ
Главное отличие XOR от обычного ИЛИ заключается в результате при истинности обоих операндов:
- ИЛИ: 1 OR 1 = 1
- XOR: 1 XOR 1 = 0
То есть XOR возвращает истину только при различных значениях операндов, в то время как ИЛИ истинно всегда, кроме случая с двумя нулями.
Сравнение таблиц истинности XOR и OR
A | B | A XOR B | A OR B |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
Применение операции XOR в различных областях
XOR находит широкое применение в различных сферах компьютерных технологий:
Криптография
В криптографии XOR используется для:
- Генерации одноразовых блокнотов
- Создания потоковых шифров
- Реализации режимов шифрования блочных алгоритмов
Например, простейшее XOR-шифрование выглядит так: Шифротекст = Открытый текст XOR Ключ
Обработка данных
XOR применяется для:
- Обмена значений переменных без использования дополнительной памяти
- Быстрого определения знака числа
- Реализации некоторых хеш-функций
Коды обнаружения и исправления ошибок
XOR используется в алгоритмах контроля четности и кодах Хэмминга для обнаружения и исправления ошибок при передаче данных.

Реализация XOR в различных языках программирования
Операция XOR поддерживается во многих языках программирования. Вот несколько примеров:
Python
a = 5 # 101 в двоичной системе
b = 3 # 011 в двоичной системе
result = a ^ b # XOR операция
print(result) # Выведет 6 (110 в двоичной системе)
C++
int a = 5; // 101 в двоичной системе
int b = 3; // 011 в двоичной системе
int result = a ^ b; // XOR операция
std::cout << result; // Выведет 6 (110 в двоичной системе)
JavaScript
let a = 5; // 101 в двоичной системе
let b = 3; // 011 в двоичной системе
let result = a ^ b; // XOR операция
console.log(result); // Выведет 6 (110 в двоичной системе)
XOR в контексте других логических операций
XOR является одной из базовых логических операций наряду с AND, OR и NOT. Как XOR соотносится с другими операциями?
Выражение XOR через другие операции
XOR можно выразить через комбинацию других логических операций:
A XOR B = (A OR B) AND NOT(A AND B)
Это выражение показывает суть XOR: оно истинно, когда A или B истинны, но не оба одновременно.
Применение XOR в сложных логических выражениях
XOR часто используется в комбинации с другими логическими операциями для создания сложных условий. Например:
(A XOR B) AND (C OR D)
Это выражение будет истинным, если либо A, либо B (но не оба) истинны, и при этом хотя бы одно из C или D истинно.
Особенности применения XOR в битовых операциях
XOR широко используется для манипуляций с отдельными битами в числах. Вот несколько интересных применений:

Инвертирование отдельных битов
XOR с единицей инвертирует соответствующий бит:
1010 XOR 1100 = 0110
Здесь инвертированы первый и второй биты исходного числа.
Обмен значений без использования временной переменной
XOR позволяет обменять значения двух переменных без использования третьей:
a = a XOR b
b = b XOR a
a = a XOR b
После этих операций значения a и b поменяются местами.
Эффективность XOR в вычислительных системах
XOR является одной из самых быстрых битовых операций в современных процессорах. Почему XOR так эффективен?
- Простота реализации на аппаратном уровне
- Возможность параллельного выполнения для многобитных чисел
- Отсутствие переносов между разрядами, в отличие от арифметических операций
Благодаря этим факторам, XOR часто используется в критичных к производительности алгоритмах, особенно в области криптографии и обработки сигналов.
Сравнение скорости XOR с другими операциями
В большинстве современных процессоров XOR выполняется за один такт, так же как и операции AND и OR. Однако в некоторых архитектурах XOR может быть даже быстрее, чем сложение или умножение, которые требуют обработки переносов между разрядами.

Важно отметить, что конкретная производительность зависит от архитектуры процессора и может варьироваться. Тем не менее, XOR почти всегда остается одной из самых быстрых битовых операций.
» для логического типа bool возвращает результат согласно описанным правилам, для остальных же типов проихводится его побитовое применение. Перегрузка для стандартных типов невозможна, но операцию XOR над ними можно реализовать, исходя из принципа "исключающего ИЛИ". Выглядит это так:
(condition1 || condition2) && (condition1 != condition2)
(при этом нет разницы, применяются ли побитовые операторы & и |, или же логические && и ||)
Связь с естественным языком
Часто указывают на сходство между сложением по модулю 2 и конструкцией «либо … либо …» в естественном языке. Составное утверждение «либо A, либо B» считается истинным, когда истинно либо A, либо B, но не оба сразу; в противном случае составное утверждение ложно. Это в точности соответствует определению операции в булевой алгебре, если «истину» обозначать как 1, а «ложь» как 0.
Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:
- истинно, если истинно или , или оба сразу.
- истинно, если истинно или , но не оба сразу.
Операция исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.
См. также
- Битовые операции
- Деление по модулю
- Алгоритм обмена при помощи исключающего ИЛИ
Wikimedia Foundation. 2010.
Игры ⚽ Нужна курсовая?
- Исключающее "или"
- Исключение двойного отрицания
Полезное
Проект "логика для чайников". Параграф 26.
Простейшие логические операции
Простейшие логические операции относятся к двузначной логике. Их 4 штуки: “НЕ”, “И”, “ИЛИ”, “XOR”. Также для обозначения этих операций используют разные значки (“~”, “&” и т.п.).
При записи логических формул вместо слов “истина” и “ложь” обычно используют стандартные международные обозначения:
Вместо “истина” пишут: true, T, t, 1.
Вместо “ложь” пишут: false, F, f, 0.
“НЕ”
Операция “НЕ” преобразует истину в ложь, а ложь в истину:
НЕ true = false
НЕ false = true
У этой операции бывают разные другие названия: “логическое НЕ”, “отрицание”, “логическое отрицание”, “инверсия”, “логическая инверсия”. Для международных обозначений вместо “НЕ” пишут “NOT”.
В естественном языке этой операции соответствует добавление слов “неправда, что...” в начале высказывания. Например:
“Сурков должен мне денег”. (1)
Применение операции “НЕ” к высказыванию (1):
“Неправда, что Сурков должен мне денег”. (2)
Если высказывание (1) ложно, то высказывание (2) истинно. Если высказывание (2) ложно, то высказывание (1) истинно.
Нетрудно понять, что двойное применение “НЕ” возвращает нас к прежней истинности.
“Неправда, что неправда, что Сурков должен мне денег”. (3)
Истинность высказывания (3) всегда совпадает с истинностью высказывания (1).
“И”
Операция “И” применяется к двум высказываниям. Ее результат “истина”, только если оба высказывания истинны (а иначе “ложь”):
false И false = false
false И true = false
true И false = false
true И true = true
У этой операции бывают разные другие названия: “логическое И”, “конъюнкция”, “логическое умножение”. Для международных обозначений вместо “И” пишут “AND”.
В естественном языке этой операции соответствует вставка союза “и” между высказываниями. Например:
“Сурков должен мне денег”. (1)
“Петров должен мне денег”. (2)
Применение операции “И” к высказываниям (1) и (2):
“Сурков должен мне денег, и Петров должен мне денег”. (3)
Эту фразу можно сократить, сохранив прежний смысл:
“Сурков и Петров должны мне денег”. (3)
Высказывание (3) истинно только тогда, когда истинны оба высказывания: (1) и (2). Если хотя бы одно из них ложно, то результат тоже ложен. Если оба ложны – тоже.
То есть, если Петров мне денег не задолжал, а задолжал только Сурков, тогда высказывание (3) не будет “полуправдой” или “полуложью”, а будет просто ложью.
“ИЛИ”
Операция “ИЛИ” применяется к двум высказываниям. Ее результат “истина”, если хотя бы одно высказывание истинно (а иначе “ложь”):
false ИЛИ false = false
false ИЛИ true = true
true ИЛИ false = true
true ИЛИ true = true
У этой операции бывают разные другие названия: “логическое ИЛИ”, “включающее ИЛИ”, “дизъюнкция”, “логическое сложение”. Для международных обозначений вместо “ИЛИ” пишут “OR”.
В естественном языке этой операции соответствует вставка союза “или” между высказываниями, но... не всегда (см. ниже об операции “XOR”). Например:
“Я хочу попить”. (1)
“Я хочу поесть”. (2)
Применение операции “ИЛИ” к высказываниям (1) и (2):
“Я хочу попить, или я хочу поесть”. (3)
По-русски звучит правильно, но коряво, и эту фразу можно сократить, сохранив прежний смысл:
“Я хочу попить или поесть ”. (3)
Высказывание (3) истинно тогда, когда истинно хотя бы одно из высказываний (1) и (2), а можно оба. Если оба высказывания ложны, то результат тоже ложен.
То есть, если я хочу есть, но не пить, тогда высказывание (3) истинно. Если я не прочь и поесть, и попить, выказывание (3) тоже истинно. Ложно оно тогда, когдя я не хочу ни того, ни другого.
“XOR”
Операция “XOR” применяется к двум высказываниям. Ее результат “истина”, если ровно одно из высказываний истинно (а иначе “ложь”):
false XOR false = false
false XOR true = true
true XOR false = true
true XOR true = false
У этой операции бывают разные другие названия: “исключающее ИЛИ”, “сложение по модулю 2”, “логическое сложение по модулю 2”. “XOR” – это международное обозначение, общепринятого “русского” аналога нет.
В естественном языке этой операции соответствует вставка союза “или” между высказываниями – так же, как в случае с операцией “ИЛИ”. Например:
“Я собираюсь просить прибавки к зарплате”. (1)
“Я попытаюсь сэкономить ”. (2)
Применение операции “XOR” к высказываниям (1) и (2):
“Я собираюсь просить прибавки к зарплате или я попытаюсь сэкономить”. (3)
Сокращенно:
“Я собираюсь просить прибавки к зарплате или попытаюсь сэкономить”. (3)
Высказывание (3) истинно тогда, когда истинно ровно одно из высказываний (1) и (2). Если я не собираюсь ни просить прибавки, ни экономить, тогда фраза ложна. Также, я имел в виду, что не собираюсь делать и то, и другое одновременно.
Обратите внимание на разницу между операциями “ИЛИ” и “XOR”. Она заключается только в последнем правиле:
true ИЛИ true = true
true XOR true = false
В естественном языке обе операции изображаются одним и тем же союзом “или”. Это – пример неоднозначности естественного языка. Если помните, омонимы и многозначные слова могут иметь больше одного значения. Союз “или” именно такой: он имеет два возможных значения. Первое выражается логической операцией “ИЛИ”, второе – логической операцией “XOR”.
В английском языке существуют те же проблемы: союз “or” имеет те же два значения. А вот древним римлянам было проще, так как в латыни есть два разных слова: “vel” (операция “ИЛИ”) и “aut” (операция “XOR”).
Поскольку разница между операциями “ИЛИ” и “XOR” невелика (всего одно последнее правило), то иногда эта разница не имеет значения. Иногда о том, что имеется в виду, можно догадаться по интонации, или по контексту. Иногда определить точный смысл так и не удается.
Определение XOR | ПКМаг
(e X включительно ИЛИ ) Булева логическая операция, которая широко используется в криптографии, а также при генерации битов четности для проверки ошибок и отказоустойчивости. XOR сравнивает два входных бита и генерирует один выходной бит. Логика проста. Если биты одинаковые, результат равен 0. Если биты разные, результат равен 1.
Несколько символов
Для обозначения операции XOR используются различные символы, включая знак + внутри круга, подчеркнутую букву «V» и знак вставки (^).
XOR в криптографии В этом примере используется XOR и один и тот же «секретный ключ» для шифрования и дешифрования. Хотя можно использовать логику XOR, алгоритмы секретного ключа намного сложнее, чем это. См. алгоритм шифрования.
Реклама
Истории PCMag, которые вам понравятся
{X-html заменен}
Выбор редакции
ЭТО ОПРЕДЕЛЕНИЕ ПРЕДНАЗНАЧЕНО ТОЛЬКО ДЛЯ ЛИЧНОГО ИСПОЛЬЗОВАНИЯ. Любое другое воспроизведение требует разрешения.Авторское право © 1981- 2023. Компьютерный язык(Открывается в новом окне) Co Inc. Все права защищены.
Информационные бюллетени PCMag
Информационные бюллетени PCMag
Наши лучшие истории в вашем почтовом ящике
Следите за новостями PCMag
- Фейсбук (Открывается в новом окне)
- Твиттер (Откроется в новом окне)
- Флипборд (Открывается в новом окне)
- Гугл (откроется в новом окне)
- Инстаграм (откроется в новом окне)
- Pinterest (Открывается в новом окне)
PCMag. com является ведущим авторитетом в области технологий, предоставляющим независимые лабораторные обзоры новейших продуктов и услуг. Наш экспертный отраслевой анализ и практические решения помогут вам принимать более обоснованные решения о покупке и получать больше от технологий.
Как мы тестируем Редакционные принципы
- (Открывается в новом окне) Логотип Зиффмедиа
- (Открывается в новом окне) Логотип Аскмен
- (Открывается в новом окне) Логотип Экстримтек
- (Открывается в новом окне) Логотип ИНГ
- (Открывается в новом окне) Логотип Mashable
- (Открывается в новом окне) Предлагает логотип
- (Открывается в новом окне) Логотип RetailMeNot
- (Открывается в новом окне) Логотип Speedtest
- (Открывается в новом окне) Логотип Спайсворкс
(Открывается в новом окне)
PCMag поддерживает Group Black и ее миссию по увеличению разнообразия голосов в СМИ и прав собственности на СМИ.
© 1996-2023 Ziff Davis, LLC., компания Ziff Davis. Все права защищены.
PCMag, PCMag.com и PC Magazine входят в число зарегистрированных на федеральном уровне товарных знаков Ziff Davis и не могут использоваться третьими лицами без явного разрешения. Отображение сторонних товарных знаков и торговых наименований на этом сайте не обязательно указывает на какую-либо принадлежность или поддержку PCMag. Если вы нажмете на партнерскую ссылку и купите продукт или услугу, этот продавец может заплатить нам комиссию.
- 9
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
9 ) сравнивает каждый бит своего первого операнда с соответствующим битом второго операнда. Если бит в одном из операндов равен 0, а бит в другом операнде равен 1, соответствующий бит результата устанавливается в 1. В противном случае соответствующий бит результата устанавливается в 0.