Le
concept d'un échange standard peut être vu avec les variables A et B; à
la fin d'un échange standard, B doit être égale à A, et A doit être
égal à B. Si un programme attribue simplement B à A, alors la valeur de
testament être perdu et ne peut pas être attribué à plus tard B. Cela
nécessite l'utilisation d'une variable temporaire qui contiendra la
valeur de A alors B est attribué à A. La dernière étape consiste à
affecter la valeur de la variable temporaire à B, complétant l'échange.
Une application très commun pour un swap classique est l'utilisation d'un algorithme de tri sur un tableau ou d'une collection.
Si un algorithme de tri a déterminé que les données à l'index du
tableau 1 doivent être échangés avec les données à l'indice 10, puis un
échange standard des données peut être réalisée. Cela peut être fait exceptionnellement rapide en utilisant des références de pointeur dans des langages tels que C
Une complication peut se produire dans certains langages orientés objet
de programmation lorsque deux instances d'objets doivent être inversés. Dans certains cas très rares, en échangeant simplement les références d'objet ne déclenche pas un swap réelle.
Au lieu de cela, le seul moyen pour échanger des objets est de cloner
les données internes, champ par champ, entre les deux objets et la
variable objet temporaire.
Il existe une technique qui peut techniquement être utilisé pour
effectuer un échange standard en utilisant l'opérateur logique OU
exclusif (XOR).
Un swap XOR repose sur le fait que, lorsque deux bits sont calculées
avec XOR, ils seront essentiellement créer un masque qui peut être
inversé avec une ou les deux des opérateurs.
De cette manière, deux variables, A et B, peuvent être échangés en
créant d'abord un masque avec un XOR des deux variables, puis en
utilisant XOR pour démasquer d'abord la valeur de B, puis la valeur de
A. Malheureusement, bien que cette méthode évite la création d'une
variable temporaire, il sera également pas fait de swap dans tous les
cas, en particulier lorsque A et B sont égales les unes aux autres et
dans les cas où le compilateur d'optimisation peuvent modifier le fonctionnement réel.