L'opérateur XOR, abréviation de OU exclusif, est un concept fondamental en informatique, en mathématiques et en logique numérique. Représenté par le symbole ^ dans de nombreux langages de programmation et ⊕ en notation mathématique, XOR est une opération logique largement utilisée dans diverses applications, notamment la cryptographie, les structures de données et les algorithmes. Cet article explorera le fonctionnement de l'opérateur XOR, ses propriétés et ses applications pratiques.
L'opérateur XOR compare deux entrées binaires et renvoie vrai (1) si les entrées sont différentes, et faux (0) si les entrées sont le même. Cela peut être résumé dans une simple table de vérité :
Input A | Input B | A XOR B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
L'opérateur XOR est souvent appelé "OU exclusif" car il renvoie vrai exclusivement lorsqu'une entrée est vraie, mais pas les deux.
Propriété d'identité :
Propriété auto-inverse :
Commutativité :
Associativité :
Annulation :
L'une des applications les plus courantes de XOR en programmation consiste à trouver l'élément unique dans un tableau où tous les autres éléments apparaissent deux fois.
public int findUnique(int[] nums) { int result = 0; for (int num : nums) { result ^= num; // XOR all elements } return result; // The unique number remains }
Cela fonctionne parce que les nombres en double s'annulent, comme : x ⊕ x = 0 .
Vous pouvez utiliser XOR pour échanger deux nombres sans avoir besoin d'une variable supplémentaire :
int a = 5, b = 10; a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("a: " + a + ", b: " + b); // Output: a: 10, b: 5
Voici comment cela fonctionne étape par étape :
L'opérateur XOR est largement utilisé en cryptographie pour combiner du texte en clair avec une clé afin de produire du texte chiffré. Puisque XOR est réversible (A ⊕ B) ⊕ B = A, il garantit un cryptage et un déchiffrement sécurisés.
// Simple XOR Encryption public String xorEncrypt(String message, char key) { char[] encrypted = new char[message.length()]; for (int i = 0; i < message.length(); i++) { encrypted[i] = (char) (message.charAt(i) ^ key); } return new String(encrypted); }
Dans ce problème sur LeetCode.
Vous pouvez utiliser XOR pour résoudre le problème.
Imaginez, vous avez 2 chaînes comme s = "abcd" et t = "abcde" et renvoyez la différence entre alors.
public char findTheDifference(String s, String t) { char result = 0; for (int i = 0; i < s.length(); i++) { result ^= s.charAt(i); } for (int i = 0; i < t.length(); i++) { result ^= t.charAt(i); } return result; }
XOR est efficace, nécessitant des ressources de calcul minimales. Il fonctionne au niveau du bit, ce qui le rend plus rapide que de nombreuses méthodes alternatives pour des tâches telles que le chiffrement, la détection d'erreurs, etc. Ses propriétés uniques en font un outil polyvalent pour résoudre divers problèmes informatiques.
L'opérateur XOR est un outil puissant et polyvalent en informatique et en mathématiques. En comprenant ses propriétés et ses applications, vous pouvez l'exploiter pour écrire des algorithmes efficaces, résoudre des problèmes complexes et même améliorer votre compréhension des opérations de bas niveau. Que vous optimisiez des algorithmes ou exploriez la cryptographie, XOR est un élément indispensable de votre boîte à outils de programmation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!