Исключа́ющее «или» (сложе́ние по мо́дулю 2, XOR, строгая дизъюнкция, поразрядное дополнение, инвертирование по маске, жегалкинское сложение, логическое вычитание, логи́ческая неравнозна́чность) — булева функция, а также логическая и битовая операция, в случае двух переменных результат выполнения операции истинен тогда и только тогда, когда один из аргументов истинен, а другой — ложен. Для функции трёх (тернарное сложение по модулю 2) и более переменных — результат выполнения операции будет истинным только тогда, когда количество аргументов, равных 1, составляющих текущий набор, — нечётное. Такая операция естественным образом возникает в кольце вычетов по модулю 2, откуда и происходит название операции.
Исключающее «или» | |
---|---|
Сложение по модулю 2, XOR | |
| |
Таблица истинности | |
Логический вентиль | |
Нормальные формы | |
Дизъюнктивная | |
Конъюнктивная | |
Полином Жегалкина | |
Принадлежность предполным классам | |
Сохраняет 0 | Да |
Сохраняет 1 | Нет |
Монотонна | Нет |
Линейна | Да |
Самодвойственна | Нет |
Сложение по модулю 2 называется «исключающим „или“» и «строгой дизъюнкцией» для отличения от «обычного» (неисключающего) логического «или» — нестрогой логической дизъюнкции. В теории множеств сложению по модулю 2 соответствует операция симметрической разности двух множеств.
Инверсией исключающего «или» является эквиваленция.
Обозначения
Запись может быть префиксной («польская запись») — знак операции ставится перед операндами, инфиксной — знак операции ставится между операндами и постфиксной — знак операции ставится после операндов. При числе операндов более двух префиксная и постфиксная записи экономичнее инфиксной записи. Чаще всего встречаются следующие варианты записи:
^ , a ≠ b, a<>b, a!=b, , 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.
Свойства
- (отрицание)
- (самообратимость)
- (коммутативность)
- (ассоциативность)
- ([англ.])
- (сравнения по модулю)
Булева алгебра
В булевой алгебре сложение по модулю 2 — это функция двух, трёх и более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений может использоваться любая другая пара подходящих символов, например или или «ложь», «истина», но при этом необходимо доопределять старшинство, например, .
Двумерная (двухаргументная, двухкоординатная) диаграмма (двумерный массив) истинности из четырёх ячеек:
x⊕y = x XOR y = x<>y = x!=y = x^y y 1 0 0 1 x
на которой сразу видно, что функция симметрична относительно главной диагонали.
Таблицы истинности:
- для бинарного сложения по модулю 2 (применяется в двоичных полусумматорах):55–61:
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Правило: результат равен , если оба операнда равны; во всех остальных случаях результат равен .
- для тернарного сложения по модулю 2 (применяется в двоичных полных сумматорах):
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
Правило: результат равен , если количество операндов равных чётное (ноль также является чётным числом), в остальных случаях результат равен .
Программирование
В языках C/, Java, C#, Ruby, PHP, JavaScript, Python и т. д. битовая операция поразрядного дополнения обозначается символом «^», в языках Паскаль, Delphi, Ada, Turbo Basic, Visual Basic — зарезервированным словом xor, в языке ассемблера — одноимённой логической командой. При этом сложение по модулю 2 выполняется для всех битов левого и правого операнда попарно. Например,
- если
- то
Выполнение операции исключающее «или» для значений логического типа (true, false) производится в разных языках программирования по-разному. Например, в Delphi используется встроенный оператор XOR (пример: условие1 xor условие2). В языке C, начиная со стандарта C99, оператор «^» над операндами логического типа возвращает результат применения логической операции XOR. В оператор «^» для логического типа bool возвращает результат согласно описанным правилам, для остальных же типов производится его побитовое применение.
Использование побитового исключающего «или» позволяет поменять местами значения целых переменных без использования дополнительной памяти.
Криптография
На основе исключающего «или» работает шифр Вернама, также известный как «одноразовый блокнот», обладающий абсолютной криптографической стойкостью. На практике это означает, что если зашифровать исходное сообщение при помощи одноразового ключа , так, чтобы длина сообщения и ключа были равны, то по получившемуся в результате шифрования шифротексту невозможно будет определить значение исходного сообщения без знания ключа.
При этом алгоритм шифрования представляет собой только одну операцию – исключающее «или»:
Для дешифровки шифротекста алгоритмом исключающее «или» применяют ещё раз:
Важно понимать, что в случае, если попытаться использовать одинаковые ключи для шифрования более чем одного сообщения на основании исключающего «или», то криптографическая стойкость системы будет нарушена.
Помимо одноразового блокнота, операция исключающего «или» получила распространение во многих криптографических системах и алгоритмах включая DES, AES и других.
Связь с естественным языком
В естественном языке операция «сложение по модулю» эквивалентна двум выражениям:
- «результат истинен (равен 1), если A не равно B (A≠B)»;
- «если A не равно B (A≠B), то истина (1)».
Часто указывают на сходство между сложением по модулю 2 и конструкцией «либо … либо …» в естественном языке. Составное утверждение «либо A, либо B» считается истинным, когда истинно/ложно либо A, либо B поодиночке, но не оба сразу; в противном случае составное утверждение ложно. Это в точности соответствует определению операции в булевой алгебре, если «истину» обозначать как , а «ложь» как .
Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:
- истинно, если истинно или , или оба сразу («хотя бы один из двух»).
- истинно, если истинно или , но не оба сразу («только один из двух»).
Операция исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.
Квантовые вычисления
В квантовых компьютерах аналог операции сложения по модулю 2 — вентиль CNOT.
Цифровая техника
См. также
Примечание
- Шило В.Л. Популярные цифровые микросхемы: Справочник.— М.: Радио и связь, 1987. — 352 с. — (Массовая радиобиблиотека. Вып. 1111).
Внешние ссылки
В статье есть список , но не хватает . |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер
Isklyucha yushee ili slozhe nie po mo dulyu 2 XOR strogaya dizyunkciya porazryadnoe dopolnenie invertirovanie po maske zhegalkinskoe slozhenie logicheskoe vychitanie logi cheskaya neravnozna chnost buleva funkciya a takzhe logicheskaya i bitovaya operaciya v sluchae dvuh peremennyh rezultat vypolneniya operacii istinen togda i tolko togda kogda odin iz argumentov istinen a drugoj lozhen Dlya funkcii tryoh ternarnoe slozhenie po modulyu 2 i bolee peremennyh rezultat vypolneniya operacii budet istinnym tolko togda kogda kolichestvo argumentov ravnyh 1 sostavlyayushih tekushij nabor nechyotnoe Takaya operaciya estestvennym obrazom voznikaet v kolce vychetov po modulyu 2 otkuda i proishodit nazvanie operacii Isklyuchayushee ili Slozhenie po modulyu 2 XORDiagramma VennaTablica istinnosti 0110 displaystyle 0110 Logicheskij ventilNormalnye formyDizyunktivnaya x y x y displaystyle overline x cdot y x cdot overline y Konyunktivnaya x y x y displaystyle overline x overline y cdot x y Polinom Zhegalkina x y displaystyle x oplus y Prinadlezhnost predpolnym klassamSohranyaet 0 DaSohranyaet 1 NetMonotonna NetLinejna DaSamodvojstvenna NetGrafik pobitovogo isklyuchayushego ili Slozhenie po modulyu 2 nazyvaetsya isklyuchayushim ili i strogoj dizyunkciej dlya otlicheniya ot obychnogo neisklyuchayushego logicheskogo ili nestrogoj logicheskoj dizyunkcii V teorii mnozhestv slozheniyu po modulyu 2 sootvetstvuet operaciya simmetricheskoj raznosti dvuh mnozhestv Inversiej isklyuchayushego ili yavlyaetsya ekvivalenciya OboznacheniyaZapis mozhet byt prefiksnoj polskaya zapis znak operacii stavitsya pered operandami infiksnoj znak operacii stavitsya mezhdu operandami i postfiksnoj znak operacii stavitsya posle operandov Pri chisle operandov bolee dvuh prefiksnaya i postfiksnaya zapisi ekonomichnee infiksnoj zapisi Chashe vsego vstrechayutsya sleduyushie varianty zapisi 2 a b a displaystyle oplus 2 a b a b a b a 2b a 2b displaystyle b a oplus b a oplus 2 b a 2 b a b a lt gt b a b a b a b 2 displaystyle a neq b a b oplus 2 a XOR b V Yunikode est simvoly dlya slozheniya po modulyu 2 U 22BB xor U 2295 circled plus i U 2A27 plus sign with subscript two U 2A52 logical or with dot above a takzhe simvol dlya summy po modulyu 2 U 2A0A modulo two sum Svojstvaa 1 a displaystyle a oplus 1 bar a otricanie a a 0 displaystyle a oplus a 0 samoobratimost a b b a displaystyle a oplus b b oplus a kommutativnost a b c a b c displaystyle a oplus b oplus c a oplus b oplus c associativnost a b b a displaystyle a oplus b oplus b a angl a b a b a b displaystyle bar a oplus b a oplus bar b a equiv b sravneniya po modulyu a b c a c b displaystyle a oplus b c a oplus c b Buleva algebraV bulevoj algebre slozhenie po modulyu 2 eto funkciya dvuh tryoh i bolee peremennyh oni zhe operandy operacii oni zhe argumenty funkcii Peremennye mogut prinimat znacheniya iz mnozhestva 0 1 displaystyle 0 1 Rezultat takzhe prinadlezhit mnozhestvu 0 1 displaystyle 0 1 Vychislenie rezultata proizvoditsya po prostomu pravilu libo po tablice istinnosti Vmesto znachenij 0 1 displaystyle 0 1 mozhet ispolzovatsya lyubaya drugaya para podhodyashih simvolov naprimer false true displaystyle false true ili F T displaystyle F T ili lozh istina no pri etom neobhodimo doopredelyat starshinstvo naprimer true gt false displaystyle true gt false Dvumernaya dvuhargumentnaya dvuhkoordinatnaya diagramma dvumernyj massiv istinnosti iz chetyryoh yacheek x y x XOR y x lt gt y x y x y y 1 0 0 1 x na kotoroj srazu vidno chto funkciya simmetrichna otnositelno glavnoj diagonali Tablicy istinnosti dlya binarnogo slozheniya po modulyu 2 primenyaetsya v dvoichnyh polusummatorah 55 61 a displaystyle a b displaystyle b a b displaystyle a oplus b 0 0 00 1 11 0 11 1 0 Pravilo rezultat raven 0 displaystyle 0 esli oba operanda ravny vo vseh ostalnyh sluchayah rezultat raven 1 displaystyle 1 dlya ternarnogo slozheniya po modulyu 2 primenyaetsya v dvoichnyh polnyh summatorah a displaystyle a b displaystyle b c displaystyle c a b c displaystyle a oplus b oplus c 0 0 0 00 0 1 10 1 0 10 1 1 01 0 0 11 0 1 01 1 0 01 1 1 1 Pravilo rezultat raven 0 displaystyle 0 esli kolichestvo operandov ravnyh 1 displaystyle 1 chyotnoe nol takzhe yavlyaetsya chyotnym chislom v ostalnyh sluchayah rezultat raven 1 displaystyle 1 ProgrammirovanieV yazykah C C Java C Ruby PHP JavaScript Python i t d bitovaya operaciya porazryadnogo dopolneniya oboznachaetsya simvolom v yazykah Paskal Delphi Ada Turbo Basic Visual Basic zarezervirovannym slovom xor v yazyke assemblera odnoimyonnoj logicheskoj komandoj Pri etom slozhenie po modulyu 2 vypolnyaetsya dlya vseh bitov levogo i pravogo operanda poparno Naprimer esli a 011001012 displaystyle a 01100101 2 b 001010012 displaystyle b 00101001 2 to a b 010011002 displaystyle a hat b 01001100 2 Vypolnenie operacii isklyuchayushee ili dlya znachenij logicheskogo tipa true false proizvoditsya v raznyh yazykah programmirovaniya po raznomu Naprimer v Delphi ispolzuetsya vstroennyj operator XOR primer uslovie1 xor uslovie2 V yazyke C nachinaya so standarta C99 operator nad operandami logicheskogo tipa vozvrashaet rezultat primeneniya logicheskoj operacii XOR V C operator dlya logicheskogo tipa bool vozvrashaet rezultat soglasno opisannym pravilam dlya ostalnyh zhe tipov proizvoditsya ego pobitovoe primenenie Ispolzovanie pobitovogo isklyuchayushego ili pozvolyaet pomenyat mestami znacheniya celyh peremennyh bez ispolzovaniya dopolnitelnoj pamyati KriptografiyaNa osnove isklyuchayushego ili rabotaet shifr Vernama takzhe izvestnyj kak odnorazovyj bloknot obladayushij absolyutnoj kriptograficheskoj stojkostyu Na praktike eto oznachaet chto esli zashifrovat ishodnoe soobshenie m displaystyle m pri pomoshi odnorazovogo klyucha k displaystyle k tak chtoby dlina soobsheniya i klyucha byli ravny to po poluchivshemusya v rezultate shifrovaniya shifrotekstu c displaystyle c nevozmozhno budet opredelit znachenie ishodnogo soobsheniya bez znaniya klyucha Pri etom algoritm shifrovaniya E displaystyle E predstavlyaet soboj tolko odnu operaciyu isklyuchayushee ili E k m k m c displaystyle E k m k oplus m c Dlya deshifrovki shifroteksta c displaystyle c algoritmom D displaystyle D isklyuchayushee ili primenyayut eshyo raz D k c k c m displaystyle D k c k oplus c m Vazhno ponimat chto v sluchae esli popytatsya ispolzovat odinakovye klyuchi dlya shifrovaniya bolee chem odnogo soobsheniya na osnovanii isklyuchayushego ili to kriptograficheskaya stojkost sistemy budet narushena Pomimo odnorazovogo bloknota operaciya isklyuchayushego ili poluchila rasprostranenie vo mnogih kriptograficheskih sistemah i algoritmah vklyuchaya DES AES i drugih Svyaz s estestvennym yazykomV estestvennom yazyke operaciya slozhenie po modulyu ekvivalentna dvum vyrazheniyam rezultat istinen raven 1 esli A ne ravno B A B esli A ne ravno B A B to istina 1 Chasto ukazyvayut na shodstvo mezhdu slozheniem po modulyu 2 i konstrukciej libo libo v estestvennom yazyke Sostavnoe utverzhdenie libo A libo B schitaetsya istinnym kogda istinno lozhno libo A libo B poodinochke no ne oba srazu v protivnom sluchae sostavnoe utverzhdenie lozhno Eto v tochnosti sootvetstvuet opredeleniyu operacii v bulevoj algebre esli istinu oboznachat kak 1 displaystyle 1 a lozh kak 0 displaystyle 0 Etu operaciyu neredko sravnivayut s dizyunkciej potomu chto oni ochen pohozhi po svojstvam i obe imeyut shodstvo s soyuzom ili v povsednevnoj rechi Sravnite pravila dlya etih operacij A B displaystyle A lor B istinno esli istinno A displaystyle A ili B displaystyle B ili oba srazu hotya by odin iz dvuh A B displaystyle A oplus B istinno esli istinno A displaystyle A ili B displaystyle B no ne oba srazu tolko odin iz dvuh Operaciya displaystyle oplus isklyuchaet poslednij variant oba srazu i po etoj prichine nazyvaetsya isklyuchayushim ILI Operaciya displaystyle lor vklyuchaet poslednij variant oba srazu i po etoj prichine inogda nazyvaetsya vklyuchayushim ILI Neodnoznachnost estestvennogo yazyka zaklyuchaetsya v tom chto soyuz ili mozhet primenyatsya v oboih sluchayah Kvantovye vychisleniyaV kvantovyh kompyuterah analog operacii slozheniya po modulyu 2 ventil CNOT Cifrovaya tehnikaSm takzheIdentichnost Otricanie Konyunkciya Dizyunkciya Ekvivalenciya Implikaciya Obratnaya implikaciya Shtrih Sheffera Strelka Pirsa Tablica istinnosti Zakon tozhdestvaPrimechanieShilo V L Populyarnye cifrovye mikroshemy Spravochnik M Radio i svyaz 1987 352 s Massovaya radiobiblioteka Vyp 1111 Vneshnie ssylkiV state est spisok istochnikov no ne hvataet snosok Bez snosok slozhno opredelit iz kakogo istochnika vzyato kazhdoe otdelnoe utverzhdenie Vy mozhete uluchshit statyu prostaviv snoski na istochniki podtverzhdayushie informaciyu Svedeniya bez snosok mogut byt udaleny 29 maya 2012