by

Ek Değişken Kullanmadan Swap İşlemi Yapmak

*Bilgisayar Biliminde* iki değişkenin değerlerinin karşılıklı olarak birbirlerine aktarılması işlemine *[Swap](http://en.wikipedia.org/wiki/Swap_%28computer_science%29)* işlemi denir. Swap işlemi çoğumuzun da bildiği üzere ek bir değişken kullanarak yapılıyor.

void swap(int *var1, int *var2) { int temp; temp = *var1; *var1 =*var2; *var2 = temp; }

**

Peki hiç düşündük mü acaba bu işlemi ek değişken kullanmadan yapabilir miyiz diye? Kullağa ilk başta çok ilginç geliyor tıpkı* Veri Yapıları ve Algoritmalar* dersine ait bir soruymuş gibi geliyor.

Bu sorunun cevabı evet. Burada yardımımıza yine Bilgisayar Biliminde çok duymuş olduğumuz **[XOR](http://tr.wikipedia.org/wiki/XOR_kap%C4%B1s%C4%B1)** işleci yardımımıza koşuyor.

void xorSwap(int* var1, int *var2){ if ( var1 != var2 ){ *var1 ^= *var2; *var2 ^= *var1; *var1 ^= *var2; } }

*Örnek C kodu*

**

Yukarıda yazdığımız kodun makrosunu tanımlamak istersek onu da şu şekilde tanımlıyoruz.

#define xorSwap1(x,y) {x^=y; y^=x; x^=y;}

İşlem 1. Değişkenin
içeriği
2. Değişkenin
içeriği
İlk Durum var1 var2
1. Adım var1 ^= var2 var1 xor var2 var2
2. Adım var2 ^= var1 var1 xor var2 ((var1 xor var2)  xor var2)  = var 1
3. Adım var1 ^= var2 ((var1 xor var2) xor var1) =** var2** **var1**
[XOR SWAP İşlemine ait Wikipedia Sayfası](http://en.wikipedia.org/wiki/XOR_swap_algorithm)