XOR logique en C++

Suraj P 12 octobre 2023
  1. XOR logique en C++
  2. Utiliser le XOR logique avec des opérandes booléens en C++
  3. Utiliser le XOR logique avec des opérandes non booléens en C++
  4. Utiliser le XOR logique avec des expressions complexes en C++
  5. Implémenter le XOR logique à l’aide de l’opération mod 2 en C++
XOR logique 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
Auteur: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Article connexe - C++ Operator