T=A;
A=B;
B=T;
Mesele yer değiştirmek değil, mesele sadece iki değişken kullanarak yer değiştirmek derseniz işte kodları:
#include <stdio.h>
void degistir(int,int);
void main()
{ int a=3333, b=9999;
degistir(&a,&b);
printf("a = %d, b= %d ",a,b);
}
void degistir(int *a, int *b)
{
*a^=*b;
*b^=*a;
*a^=*b;
}
Burada yer değiştirme işlemi yapılırken XOR mantığı kullanılıyor. Gerçekten çok güzel hareket.
Bir örnekle gerçekleşen olayları açıklayacak olursak: a’nın 9 (1001 ikilik sistemde), b’nin de 6 (0110 ikilik sistemde) olduğunu varsayalım ve kodda adım adım ilerleyelim,
a^=b; : a=a XOR b, a = 1111
b=^a; : b=a XOR b, b=1001
a^=b; : a=a XOR b, a=0110
Sonuçta olarak yer değiştirme işlemi tamamlandı. 3. bir değişken de kullanılmadı. Bu yöntem XOR kullanıldığından hızlı da bir yöntemdir.
Hiç yorum yok:
Yorum Gönder