11
votes

C: xnor / exclusivité-ni porte?

J'essaie de trouver le moyen le plus efficace d'écrire une porte Xnor dans C.

if(VAL1 XNOR VAL2)
{
    BLOCK;
}


0 commentaires

3 Réponses :


7
votes
if(!(val1^val2))
{
    block;
}
edit: outside of logical operations, you'd probably want ~(val1^val2) to be exact, but i find the ! clearer.

0 commentaires

0
votes

présumer val1 code> et VAL2 code> doit être traité à la mode booléenne logique normale C (non nulle est vrai), puis:

if (!val1 ^ !!val2)
{

}


0 commentaires

26
votes

avec deux opérandes c'est tout à fait simple: xxx


2 commentaires

Cela devrait être la réponse acceptée. Parfois, nous avons tendance à détourner les choses les plus évidentes!


Cette réponse est incorrecte car elle suppose que les deux valeurs sont égales. Et si elles sont à la fois des valeurs non nulles mais différentes?