XOR logique en C++
-
XOR
logique en C++ -
Utiliser le
XOR
logique avec des opérandes booléens en C++ -
Utiliser le
XOR
logique avec des opérandes non booléens en C++ -
Utiliser le
XOR
logique avec des expressions complexes en C++ -
Implémenter le
XOR
logique à l’aide de l’opérationmod 2
en C++
Nous allons apprendre dans ce tutoriel comment implémenter le XOR
logique en C++.
XOR
logique en C++
En C++, bien que nous ayons un OU logique (||)
et un ET logique (&&)
, nous n’avons pas de OU exclusif logique
. En utilisant les opérateurs existants, nous pouvons imiter la fonctionnalité de XOR
logique.
L’opérateur logique XOR
n’est pas présent en C++ car il s’agit simplement d’un opérateur équivalent, pas égal à
avec des valeurs booléennes.
Donc une syntaxe générale serait : A et B sont des valeurs booléennes.
A logical XOR B is equivalent to A!=B
Si nous regardons la table de vérité de XOR
, nous savons que XOR
n’est rien d’autre qu’un vérificateur d’inégalité pour les valeurs booléennes. Nous pouvons donc utiliser l’opérateur pas égal à (!=)
pour imiter le XOR
logique.
Utiliser le XOR
logique avec des opérandes booléens en C++
#include <bits/stdc++.h>
using namespace std;
int main() {
bool a = 0;
bool b = 1;
if (a != b) {
cout << "Yes\n";
}
else
cout << "NO\n";
}
Production:
Yes
Utiliser le XOR
logique avec des opérandes non booléens en C++
Ici, nous devons apporter des modifications. Comme les valeurs ne sont pas booléennes, nous devons d’abord les convertir en booléen, puis appliquer l’opérateur différent de (!=)
.
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 10;
int b = 20;
if ((!a) != (!b)) {
cout << "Yes\n";
} else
cout << "NO\n";
}
Production:
NO
Nous avons utilisé !
ici pour convertir les valeurs en booléen et les inverser afin que deux entiers positifs inégaux (true
) soient évalués comme false
.
Utiliser le XOR
logique avec des expressions complexes en C++
Nous avons compris que nous devons d’abord convertir les valeurs en booléen, puis effectuer l’opération logique XOR
. Nous étendons cette idée pour effectuer des opérations logiques XOR
pour des opérations complexes.
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 10;
int b = 20;
int x = 50;
int y = 100;
if (!(a < b) != !(x >= y)) {
cout << "Yes\n";
} else
cout << "NO";
}
On peut voir que (a<b) XOR logique (x>=y)
s’écrit !(a < b) != !(x >= y)
.
Production:
Yes
Implémenter le XOR
logique à l’aide de l’opération mod 2
en C++
Une autre façon d’implémenter un XOR
logique entre deux valeurs booléennes consiste à utiliser l’opération de module 2. A XOR logique B
peut s’écrire (A+B) % mod 2
.
#include <bits/stdc++.h>
using namespace std;
bool XOR(bool x, bool y) { return (x + y) % 2; }
int main() {
cout << "XOR(0, 0): " << XOR(0, 0) << endl;
cout << "XOR(1, 0): " << XOR(1, 0) << endl;
}
Production:
XOR(0, 0): 0
XOR(1, 0): 1