Читайте также:
|
|
Задача XOR:
исключа́ющее и́ли - булева функция и логическая операция. Результат выполнения операции является истинным только при условии, если является истинным в точности один из аргументов. Такая операция естественным образом возникает в кольце вычетов по модулю 2, откуда и происходит название операции. следует отличать от простого сложения, которое соответствует обыкновенному «неисключающему ИЛИ».
В теории множеств сложению по модулю 2 соответствует операция симметричной разности двух множеств.
В языках C/C++ (а также Java, C#, Ruby, PHP, JavaScript и т. д.) эта операция обозначается символом «^», в языках Паскаль, Delphi, Ada — зарезервированным словом XOR, в языке ассемблера — одноимённой логической командой. Сложение по модулю 2 выполняется для всех битов левого и правого операнда попарно. Например,
если | |
a = | |
b = | |
то | |
a ^ b = |
Выполнение операции XOR для значений логического типа (true, false) производится в разных языках программирования по-разному. Например в Delphi используется встроенный оператор XOR (пример: condition1 xor condition2). В языке C, начиная со стандарта C99, оператор «^» над операндами логического типа возвращает результат применения операции XOR. В С++ оператор «^» для логического типа bool возвращает результат согласно описанным правилам, для остальных же типов производится его побитовое применение.
В естественном языке операция «сложение по модулю 2» эквивалентна двум выражениям:
1. «результат истинен (равен 1), если A не равно B (A≠B)»;
2. «если A не равно B (A≠B), то истина (1)».
Часто указывают на сходство между сложением по модулю 2 и конструкцией «либо … либо …» в естественном языке. Составное утверждение «либо A, либо B» считается истинным, когда истинно либо A, либо B, но не оба сразу; в противном случае составное утверждение ложно. Это в точности соответствует определению операции в булевой алгебре, если «истину» обозначать как 1, а «ложь» как 0.
Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:
1. истинно, если истинно или , или оба сразу.
2. истинно, если истинно или , но не оба сразу.
Операция исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.
Дата добавления: 2015-11-30; просмотров: 36 | Нарушение авторских прав