La plus connue et la plus habituelle de ces méthodes est, bien entendu, d'utiliser une troisième variable :
int a = 3;
int b = 6;
int c = a;
a = b;
b = c;
Pour éviter de créer une troisième variable comme dans l'exemple ci-dessus, il est possible d'utiliser l'opérateur XOR :
int a = 3;
int b = 6;
a = a ^ b; // donne 5
b = a ^ b; // donne 3
a = a ^ b; // donne 6
Explication :
L'opérateur XOR peut se définir par la phrase suivante : Le résultat est VRAI si un et un seul des opérandes A et B est VRAI. Cela donne la table de vérité suivante :
Table de vérité de XOR | ||
A | B | R = A ⊕ B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
En binaire, le chiffre 3 correspond à "0011" et le 6 à "0110". Ainsi l'opération 6 ^ 3 donne 5, c'est-à-dire, en binaire, "0101" puisque :
- 0 ^ 0 = 0
- 0 ^ 1 = 1
- 1 ^ 1 = 0
- 0 ^ 1 = 1
Si l'on répète cette opération comme dans l'exemple ci-dessus, on obtient la permutation de nos deux variables.