XOR et table de vérité - comprendre la logique et le code

Alfred Jacques .

12 octobre 2026

Table de vérité XOR montrant que la sortie Q est 1 si A et B sont différents, et 0 s'ils sont identiques.

Quand deux conditions doivent produire un résultat vrai uniquement si une seule est active, l’opérateur XOR devient rapidement plus clair avec un tableau. Je présente ici sa table de vérité, la différence entre XOR logique et XOR bit à bit, ainsi que des exemples concrets en Python, JavaScript et C. Vous verrez aussi ses usages, ses limites et les erreurs qui provoquent le plus souvent un résultat inattendu.

L’essentiel pour comprendre et utiliser XOR correctement

  • Une seule entrée vraie produit 1 avec XOR.
  • Deux entrées identiques donnent toujours 0.
  • En programmation, ^ désigne généralement le XOR bit à bit.
  • La table comporte 4 combinaisons pour deux entrées binaires.
  • XOR est utile pour la parité, les masques et le basculement d’états.

Lire une table XOR en un coup d’œil

XOR signifie OU exclusif. Le résultat vaut 1 lorsque exactement une des deux entrées vaut 1. Si les deux entrées sont à 0 ou toutes les deux à 1, le résultat vaut 0.

La table ci-dessous est parfois appelée xor table dans la documentation anglophone. Elle suffit à vérifier rapidement un calcul logique ou à comprendre le comportement d’un opérateur dans un programme.

Entrée A Entrée B A XOR B Interprétation
0 0 0 Aucune entrée active
0 1 1 Une seule entrée active
1 0 1 Une seule entrée active
1 1 0 Les deux entrées sont actives

Le moyen le plus simple de retenir cette règle consiste à penser à une porte avec deux interrupteurs, mais une seule lampe autorisée à être active. Dès que les interrupteurs sont dans le même état, la sortie reste à 0.

Ne pas confondre XOR avec OR ou AND

La confusion entre XOR et OR est fréquente, surtout lorsque les conditions sont formulées en langage courant. OR accepte une, deux ou aucune entrée active, tandis que XOR refuse le cas où les deux entrées sont vraies simultanément.

A B AND OR XOR XNOR
0 0 0 0 0 1
0 1 0 1 1 0
1 0 0 1 1 0
1 1 1 1 0 1

J’utilise souvent la formulation suivante pour choisir le bon opérateur. AND signifie que tout doit être vrai, OR qu’au moins une condition suffit, et XOR qu’une seule condition doit être vraie. XNOR fait l’inverse de XOR et renvoie 1 lorsque les deux valeurs sont identiques.

La relation mathématique

XOR peut s’écrire avec les opérateurs classiques sous la forme (A OR B) AND NOT (A AND B). Une autre écriture équivalente est (A AND NOT B) OR (NOT A AND B). Ces formules sont utiles lorsqu’un langage ou un circuit ne propose pas directement d’opérateur XOR.

Passer de la logique aux opérations sur les bits

En programmation, XOR ne travaille pas toujours sur une simple valeur vraie ou fausse. Dans sa forme bit à bit, il compare chaque position binaire de deux nombres indépendamment. Le bit de sortie vaut 1 lorsque les deux bits comparés sont différents.

Prenons l’exemple de 5 et 3. En binaire, 5 s’écrit 0101 et 3 s’écrit 0011. La comparaison donne 0110, soit 6 en décimal.

  0101
^ 0011
= 0110

Cette distinction compte beaucoup. Un XOR logique répond à une question de type vrai ou faux, alors qu’un XOR bit à bit transforme chaque bit d’un entier. Dans de nombreux langages, le symbole ^ correspond au second cas.

Écrire et tester XOR dans un programme

Python

Avec des booléens, Python permet d’exprimer directement le XOR avec l’opérateur !=, puisque deux valeurs booléennes sont différentes uniquement lorsqu’une seule est vraie. Pour des entiers, le symbole ^ réalise une opération bit à bit.

a = True
b = False

resultat_logique = a != b
resultat_bits = 5 ^ 3

print(resultat_logique)  # True
print(resultat_bits)     # 6

JavaScript

En JavaScript, ^ convertit ses opérandes en entiers signés sur 32 bits avant d’effectuer le calcul bit à bit. Pour tester exclusivement deux conditions, je préfère souvent écrire une comparaison explicite, car elle rend l’intention plus lisible.

const actifA = true;
const actifB = false;

const uneSeuleCondition = actifA !== actifB;
const resultatBits = 5 ^ 3;

console.log(uneSeuleCondition); // true
console.log(resultatBits);       // 6

C et langages proches

En C, C++ et plusieurs langages de la même famille, ^ est l’opérateur XOR bit à bit. Il ne faut pas le confondre avec ||, qui représente le OR logique, ni avec ^^, qui n’est généralement pas un opérateur valide.

int a = 5;
int b = 3;
int resultat = a ^ b; /* resultat vaut 6 */

Pour vérifier une implémentation, je teste systématiquement les quatre combinaisons de la table de vérité. Ce petit test révèle rapidement une inversion de condition ou une confusion entre opérateurs logiques et bit à bit.

Les usages concrets de XOR en programmation

Vérifier une parité

Le XOR permet de calculer si un ensemble contient un nombre pair ou impair de valeurs à 1. En effet, chaque XOR supplémentaire inverse le résultat. Cette propriété est utilisée dans des contrôles de parité et certains mécanismes de vérification de données.

Cette méthode reste limitée. Une parité XOR peut détecter certaines erreurs, mais elle ne garantit pas qu’un message est intact et ne remplace jamais un contrôle d’intégrité adapté ou une authentification cryptographique.

Activer ou désactiver un bit

Avec un masque binaire, XOR permet de basculer un bit. Si le masque contient 1 à une position donnée, le bit correspondant change d’état. Si le masque contient 0, il reste inchangé.

etat = 0b0100
masque = 0b0010

nouvel_etat = etat ^ masque
# Résultat : 0b0110

C’est pratique pour gérer des options compactes, des permissions ou des indicateurs d’état. Il faut toutefois documenter les positions utilisées, car un masque mal choisi peut modifier plusieurs fonctionnalités en même temps.

Lire aussi : Art ASCII en programmation - Le guide complet pour des rendus parfaits

Comparer deux états

XOR permet aussi d’identifier les bits qui diffèrent entre deux nombres. L’opération a ^ b produit 1 exactement aux positions où les valeurs ne correspondent pas. Pour comparer des drapeaux ou repérer une modification dans une structure binaire, cette propriété est particulièrement efficace.

Les erreurs qui produisent un résultat inattendu

  • Confondre XOR et OR lorsque le cas des deux conditions vraies doit être refusé.
  • Utiliser ^ en pensant écrire un XOR logique dans un langage où il s’agit d’un opérateur bit à bit.
  • Oublier que les nombres possèdent plusieurs bits et que le calcul s’effectue position par position.
  • Employer des valeurs comme 2 ou 3 sans vérifier leur conversion en booléen dans le langage choisi.
  • Utiliser XOR comme mécanisme de chiffrement sans comprendre ses limites et la gestion des clés.

Le dernier point mérite une attention particulière. XOR intervient dans certains algorithmes cryptographiques, mais appliquer un nombre à un message avec XOR ne suffit pas à créer une protection sûre. La sécurité dépend de la clé, de sa longueur, de son caractère aléatoire et de sa réutilisation.

Une méthode simple pour valider son raisonnement

Avant d’intégrer XOR dans une condition ou un masque, j’écris les entrées possibles dans un tableau, puis je vérifie un exemple numérique en binaire. Cette double vérification évite de se fier uniquement à l’intuition, qui confond facilement OU inclusif et OU exclusif.

  1. Déterminer si le problème porte sur des booléens ou sur des bits.
  2. Écrire les quatre cas lorsque deux entrées sont concernées.
  3. Calculer un exemple simple avec 0 et 1.
  4. Tester les valeurs limites dans le code.
  5. Ajouter un commentaire lorsque le symbole ^ n’est pas immédiatement évident.

Pour deux conditions, la règle est courte. Même valeur signifie 0, valeur différente signifie 1. Pour plusieurs opérandes, le résultat dépend du nombre de valeurs à 1, car chaque XOR inverse successivement la sortie.

Le bon réflexe avant d’utiliser XOR

Une table XOR n’est pas seulement un aide-mémoire. Elle permet de choisir le bon opérateur, de distinguer une condition logique d’un traitement binaire et de repérer les erreurs avant qu’elles ne deviennent difficiles à diagnostiquer.

Dans la pratique, je retiens surtout ceci. XOR convient lorsque le résultat doit signaler une différence ou autoriser une seule option parmi deux. Dès que plusieurs états, des conversions implicites ou des exigences de sécurité entrent en jeu, il faut compléter la table par des tests ciblés et une documentation claire.

Questions fréquentes

Elle comporte quatre combinaisons. XOR renvoie 1 lorsque les entrées sont différentes, soit pour 0 et 1 ou 1 et 0, et 0 lorsqu’elles sont identiques, soit pour 0 et 0 ou 1 et 1.
Le XOR logique compare deux valeurs vraies ou fausses et vérifie qu’une seule condition est vraie. Le XOR bit à bit compare chaque position binaire séparément : par exemple, 5 ^ 3 donne 6, car 0101 ^ 0011 produit 0110.
En Python et en JavaScript, la comparaison != exprime clairement qu’une seule valeur booléenne est vraie. Dans ces langages comme en C, le symbole ^ sert généralement au XOR bit à bit, tandis que || représente le OR logique en C et dans plusieurs langages proches.
XOR sert notamment à vérifier une parité, basculer un bit avec un masque binaire et repérer les différences entre deux états. Une parité XOR ne garantit pas l’intégrité d’un message, et une simple combinaison XOR ne constitue pas un chiffrement sûr sans clé adaptée et gestion correcte de sa réutilisation.
Évaluer l'article

Moyenne: 0.0 / 5 · 0 évaluations

Tags

xor table de vérité logique booléenne masques binaires parité
Autor Alfred Jacques
Alfred Jacques
Je m'appelle Alfred Jacques et j'ai accumulé 12 ans d'expérience dans le domaine des technologies, en particulier dans les secteurs du web, de l'intelligence artificielle, des réseaux et de la sécurité. Mon intérêt pour ces sujets a débuté dès mon adolescence, lorsque j'ai découvert les possibilités infinies qu'offrent les nouvelles technologies. J'aime explorer les enjeux complexes de ces domaines et partager des informations claires et accessibles pour aider mes lecteurs à mieux comprendre les défis et les évolutions technologiques. Dans mes écrits, je m'efforce de fournir des analyses précises et à jour, en vérifiant mes sources et en comparant différentes perspectives. Je m'engage à simplifier des concepts parfois difficiles afin de rendre l'information utile et compréhensible pour tous. Que ce soit en suivant les dernières tendances ou en organisant mes connaissances de manière claire, je souhaite que mes articles soient une ressource précieuse pour ceux qui s'intéressent à la technologie et à ses implications dans notre quotidien.
Commentaires (0)
Ajouter un commentaire