Исключающее «или»


Исключающее «или» (сложение по модулю 2, XOR, строгая дизъюнкция, поразрядное дополнение, инвертирование по маске, жегалкинское сложение, логическое вычитание, логическая неравнозначность) — булева функция, а также логическая и битовая операция, в случае двух переменных результат выполнения операции истинен тогда и только тогда, когда один из аргументов истинен, а другой — ложен. Для функции трёх (тернарное сложение по модулю 2) и более переменных — результат выполнения операции будет истинным только тогда, когда количество аргументов, равных 1, составляющих текущий набор, — нечётное. Такая операция естественным образом возникает в кольце вычетов по модулю 2, откуда и происходит название операции.

Сложение по модулю 2 называется «исключающим „или“» и «строгой дизъюнкцией» для отличения от «обычного» (неисключающего) логического «или» — нестрогой логической дизъюнкции. В теории множеств сложению по модулю 2 соответствует операция симметрической разности двух множеств.

Обозначения

Запись может быть префиксной («польская запись») — знак операции ставится перед операндами, инфиксной — знак операции ставится между операндами и постфиксной — знак операции ставится после операндов. При числе операндов более двух префиксная и постфиксная записи экономичнее инфиксной записи. Чаще всего встречаются следующие варианты записи:
⊕ 2 ( a , b ) ,   a {displaystyle oplus _{2}(a,b),~a} ^ b ,   a ⊕ b , a ⊕ 2 b , a + 2 b , {displaystyle b,~aoplus b,aoplus _{2}b,a+_{2}b,} a ≠ b, a ≠ b , ( a , b ) ⊕ 2 , a   X O R   b {displaystyle a eq b,(a,b)oplus _{2},a~XOR~b}

В Юникоде есть символы для сложения по модулю 2: U+22BB ⊻ xor, U+2295 ⊕ circled plus и U+2A27 ⨧ plus sign with subscript two, U+2A52 ⩒ logical or with dot above, а также символ для суммы по модулю 2: U+2A0A ⨊ modulo two sum.

Свойства

  • a ⊕ 1 = a ¯ {displaystyle aoplus 1={ar {a}}} (отрицание)
  • a ⊕ a = 0 {displaystyle aoplus a=0} (самообратимость)
  • a ⊕ b = b ⊕ a {displaystyle aoplus b=boplus a} (коммутативность)
  • ( a ⊕ b ) ⊕ c = a ⊕ ( b ⊕ c ) {displaystyle (aoplus b)oplus c=aoplus (boplus c)} (ассоциативность)
  • ( a ⊕ b ) ⊕ b = a {displaystyle (aoplus b)oplus b=a} (реверсивность)
  • a ¯ ⊕ b = a ⊕ b ¯ = ( a ≡ b ) {displaystyle {ar {a}}oplus b=aoplus {ar {b}}=(aequiv b)} (сравнения по модулю)

Булева алгебра

В булевой алгебре сложение по модулю 2 — это функция двух, трёх и более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества { 0 , 1 } {displaystyle {0,1}} . Результат также принадлежит множеству { 0 , 1 } {displaystyle {0,1}} . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений 0 , 1 {displaystyle 0,1} может использоваться любая другая пара подходящих символов, например f a l s e , t r u e {displaystyle false,true} или F , T {displaystyle F,T} или «ложь», «истина», но при этом необходимо доопределять старшинство, например, t r u e > f a l s e {displaystyle true>false} .

Таблицы истинности:

  • для бинарного сложения по модулю 2 (применяется в двоичных полусумматорах):

Правило: результат равен 0 {displaystyle 0} , если оба операнда равны; во всех остальных случаях результат равен 1 {displaystyle 1} .

  • для тернарного сложения по модулю 2 (применяется в двоичных полных сумматорах):

Правило: результат равен 0 {displaystyle 0} , если количество операндов равных 1 {displaystyle 1} чётное (ноль также является чётным числом), в остальных случаях результат равен 1 {displaystyle 1} .

Программирование

В языках C/C++, Java, C#, Ruby, PHP, JavaScript, Python и т. д. битовая операция поразрядного дополнения обозначается символом «^», в языках Паскаль, Delphi, Ada, Visual Basic — зарезервированным словом xor, в языке ассемблера — одноимённой логической командой. При этом сложение по модулю 2 выполняется для всех битов левого и правого операнда попарно. Например,

если

a = 01100101 2 {displaystyle a=01100101_{2}}

b = 00101001 2 {displaystyle b=00101001_{2}}

то

a   ^ b = 01001100 2 {displaystyle a{hat { }}b=01001100_{2}}

Выполнение операции исключающее «или» для значений логического типа (true, false) производится в разных языках программирования по-разному. Например, в Delphi используется встроенный оператор XOR (пример: условие1 xor условие2). В языке C, начиная со стандарта C99, оператор «^» над операндами логического типа возвращает результат применения логической операции XOR. В C++ оператор «^» для логического типа bool возвращает результат согласно описанным правилам, для остальных же типов производится его побитовое применение.

Использование побитового исключающего «или» позволяет поменять местами значения целых переменных без использования дополнительной памяти.

Связь с естественным языком

В естественном языке операция «сложение по модулю» эквивалентна двум выражениям:

  • «результат истинен (равен 1), если A не равно B (A≠B)»;
  • «если A не равно B (A≠B), то истина (1)».
  • Часто указывают на сходство между сложением по модулю 2 и конструкцией «либо … либо …» в естественном языке. Составное утверждение «либо A, либо B» считается истинным, когда истинно/ложно либо A, либо B поодиночке, но не оба сразу; в противном случае составное утверждение ложно. Это в точности соответствует определению операции в булевой алгебре, если «истину» обозначать как 1 {displaystyle 1} , а «ложь» как 0 {displaystyle 0} .

    Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:

  • A ∨ B {displaystyle Alor B} истинно, если истинно A {displaystyle A} или B {displaystyle B} , или оба сразу («хотя бы один из двух»).
  • A ⊕ B {displaystyle Aoplus B} истинно, если истинно A {displaystyle A} или B {displaystyle B} , но не оба сразу («только один из двух»).
  • Операция ⊕ {displaystyle oplus } исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция ∨ {displaystyle lor } включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.

    Квантовые вычисления

    В квантовых компьютерах аналог операции сложения по модулю 2 — вентиль CNOT.

    Цифровая техника


    Похожие новости:

    Троеперстие

    Троеперстие
    Троеперстное сложение; Троеперстное крестное знамение — принятое в современном (со средних веков) православии (и некоторых иных древних восточных церквях) сложение пальцев правой руки при совершении

    Список операций Германии во Второй мировой войне

    Список операций Германии во Второй мировой войне
    Список наступательных операций нацистской Германии (1939—1945) Наступательные операции Операция «Вайс» — План захвата немецкими вооружёнными силами Польши Операция «Везерюбунг» — военная операция по

    Общезначимость

    Общезначимость
    Общезначимость — свойство логической формулы, состоящее в том, что эта формула истинна при любой интерпретации входящих в неё нелогических символов, то есть предикатных и пропозициональных

    Понятие о кастрации и подготовка животного к операции

    Понятие о кастрации и подготовка животного к операции
    Кастрацией, или холощением, называется операция, посредством которой уничтожается функция половых желез с экономической или терапевтической целью. Свое начало кастрация берет в глубокой древности.
    Комментариев пока еще нет. Вы можете стать первым!

    Добавить комментарий!

    Ваше Имя:
    Ваш E-Mail:
    Введите два слова, показанных на изображении: *
    Популярные статьи
    Технология 3D печати и сканирования – что нужно знать
    Технология 3D печати и сканирования – что нужно знать
    3D печать и 3D сканирование – это две инновационные технологии, которые не только изменили облик...
    Стеклянные перегородки: создание комфортных пространств
    Стеклянные перегородки: создание комфортных пространств
    Современный дизайн офисных и жилых пространств всё чаще включает в себя элементы из стекла, которые...
    Как ухаживать за клинкерной брусчаткой, чтобы она служила долго
    Как ухаживать за клинкерной брусчаткой, чтобы она служила долго
    Клинкерная брусчатка — это не только практичный, но и красивый материал для отделки тротуаров,...
    Все новости