Можно ли упростить это логическое выражение? - PullRequest
1 голос
/ 12 ноября 2009
(A Or B) And Not (A And B)

Ответы [ 5 ]

19 голосов
/ 12 ноября 2009

Вы ищете XOR , в зависимости от языка это может быть одна операция.

12 голосов
/ 12 ноября 2009

Это XOR (см. Таблицу ниже).

A B (A|B) (A&B) !(A&B) (A|B)&(!(A&B))
T T   T     T      F        F
T F   T     F      T        T
F T   T     F      T        T
F F   F     F      T        F

Вы также можете использовать неравную операцию, как (A != B).

Надеюсь, это поможет.

4 голосов
/ 12 ноября 2009

это не просто эксклюзив или? иногда обозначается этим синтаксисом: A ^ B

3 голосов
/ 12 ноября 2009

Если у вас есть Xor или равенство в ваших атомарных операциях, да, это именно первое или отрицание последнего.

0 голосов
/ 12 ноября 2009

Как уже говорили другие, это XOR. Обратите внимание, что наилучшим способом решения этой проблемы является либо логическая таблица, используемая NawaMan, либо карта Карно . В EE карты Карно более распространены, поскольку они более легко поддаются сложным выражениям с несколькими входами.

Если вы реализуете это аппаратно, карты Карно почти всегда являются лучшим способом, поскольку они дают вам минимальное количество вентилей, необходимое для реализации требуемых выходных данных. Кроме того, в отличие от программного обеспечения, у вас может не быть шлюза xor, доступного в аппаратном обеспечении, но каждый вентиль может быть выражен как комбинация других шлюзов. И могут быть сделаны из NAND и т. Д., Что увеличит количество необходимых затворов, но может снизить стоимость вашего устройства.

...