Swapper 2 variables, sans utiliser de variable intermédiaire
Par Frederic Poeydomenge le mardi, mai 9 2006, 21:39 - Général - Lien permanent
Je viens de (re)découvrir sur Bit Twiddling Hacks une vielle méthode, toute bête, permettant d'échanger le contenu de 2 variables a et b, sans utiliser de variable intermédiaire, tout simplement en utilisant l'opérateur booléen "ou exclusif" (XOR)
Le code en C :
unsigned int a = 0xCDEF;
unsigned int b = 0x1234;
a ^= b;
b ^= a;
a ^= b;
printf("a=%x / b=%x", a, b);
Le même, en PHP :
$a = 0xCDEF; $b = 0x1234; $a ^= $b; $b ^= $a; $a ^= $b; echo 'a=' , dechex($a) , ' / b=' , dechex($b);
L'algorithme est aussi décrit sur Wikipédia (XOR swap algorithm).