C: XNOR / Эксклюзив-Нор Гейт? - PullRequest
10 голосов
/ 06 июня 2010

Я пытаюсь найти наиболее эффективный способ написания гейта XNOR в C.

if(VAL1 XNOR VAL2)
{
    BLOCK;
}

Есть предложения?

Спасибо.

Ответы [ 3 ]

22 голосов
/ 06 июня 2010

С двумя операндами это довольно просто:

if (val1 == val2)
{
    block;
}
7 голосов
/ 06 июня 2010
if(!(val1^val2))
{
    block;
}

edit: вне логических операций, вы, вероятно, хотели бы, чтобы ~(val1^val2) был точным, но я нахожу! понятнее.

0 голосов
/ 06 июня 2010

Предполагая, что val1 и val2 должны обрабатываться в обычном логическом логическом C-выражении (ненулевое значение равно true), тогда:

if (!val1 ^ !!val2)
{

}

сделает свое дело.

...