Я пытаюсь найти наиболее эффективный способ написания гейта XNOR в C.
if(VAL1 XNOR VAL2) { BLOCK; }
Есть предложения?
Спасибо.
С двумя операндами это довольно просто:
if (val1 == val2) { block; }
if(!(val1^val2)) { block; }
edit: вне логических операций, вы, вероятно, хотели бы, чтобы ~(val1^val2) был точным, но я нахожу! понятнее.
~(val1^val2)
Предполагая, что val1 и val2 должны обрабатываться в обычном логическом логическом C-выражении (ненулевое значение равно true), тогда:
val1
val2
if (!val1 ^ !!val2) { }
сделает свое дело.