xor, _xorЛогический исключительный - или
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
b1 xor b2
_xor(b1, b2, …)
b1 xor b2 представляет исключительный логический or Булевых выражений b1, b2.
xor задан можно следующим образом: a xor b эквивалентен (a or b) and not (a and b).
MuPAD® использует логику с тремя состояниями с булевыми константами TRUE, FALSE и UNKNOWN. Они обрабатываются можно следующим образом:
or | TRUE | FALSE | UNKNOWN |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | UNKNOWN |
UNKNOWN | TRUE | UNKNOWN | UNKNOWN |
Булевы выражения могут состоять из этих констант, а также из произвольных арифметических выражений. Как правило, уравнения, такие как x = y и неравенства, такие как x <> y, x < y, x <= y, используются, чтобы создать Булевы выражения.
_xor(b1, b2, ...) эквивалентен b1 xor b2 xor .... Это выражение представляет TRUE, если нечетное число операндов оценивает к TRUE, и другие оценивают к FALSE. Это представляет FALSE, если четное число операндов оценивает к TRUE, и другие оценивают к FALSE. Это представляет UNKNOWN, если по крайней мере один операнд оценивает к UNKNOWN.
Комбинации констант TRUE, FALSE, UNKNOWN в Булевом выражении упрощен автоматически. Однако символьные булевы подвыражения, равенства и неравенства не оценены и упрощены логическими операторами. Используйте bool, чтобы выполнить такие выражения к одной из булевых констант. Обратите внимание, однако, что bool может оценить неравенства x < y, x <= y, и так далее только если они состоят из количеств типа Type::Real. Смотрите Пример 2.
Используйте simplify с опцией logic, чтобы упростить выражения, включающие символьные булевы подвыражения. Смотрите Пример 3.
Приоритеты логических операторов следующие. Если в сомнении, используйте круглые скобки, чтобы гарантировать, что выражение анализируется, как желаемый.
Оператор not является более сильной привязкой, чем and, то есть, not b1 and b2 = (not b1) and b2.
Оператор and является более сильной привязкой, чем xor, то есть, b1 and b2 or b3 = (b1 and b2) xor b3.
Оператор xor является более сильной привязкой, чем or, то есть, b1 xor b2 or b3 = (b1 xor b2) or b3.
Оператор or является более сильной привязкой, чем ==>, то есть, b1 or b2 ==> b3 = (b1 or b2) ==> b3.
Оператор ==> является более сильной привязкой, чем <=>, то есть, b1 ==> b2 <=> b3 = (b1 ==> b2) <=> b3.
В условном контексте if, repeat и операторов while, Булевы выражения выполнены через “отложенные вычисления” (см. _lazy_and, _lazy_or). В любом другом контексте оценены все операнды.
Комбинации булевых констант TRUE, FALSE и UNKNOWN упрощены автоматически до одной из этих констант:
TRUE and (FALSE xor TRUE)
![]()
FALSE xor UNKNOWN, TRUE xor FALSE
![]()
Логические операторы упрощают подвыражения, которые оценивают к константам TRUE, FALSE, UNKNOWN.
b1 xor b2 and TRUE
![]()
FALSE xor ((not b1) and TRUE)
![]()
b1 and (b2 xor FALSE) and UNKNOWN
![]()
FALSE or (b1 and UNKNOWN) xor x < 1
![]()
TRUE xor ((b1 and FALSE) or (b1 and TRUE))
![]()
Однако равенства и неравенства не оценены:
(x = x) and (1 < 2) and (2 < 3) xor (3 < 4)
![]()
Булева оценка осуществляется через bool:
bool(%)
![]()
Выражения, включающие символьные булевы подвыражения, не упрощены and, or, not. Упрощение нужно требовать явным образом через функциональный simplify:
(b1 and b2) xor (b1 and (not b2)) and (1 < 2)
![]()
simplify(%, logic)
![]()
|
Булевы выражения |
Булево выражение.
b, b_1, b_2