27.12.11

C ile Yer Değiştirme (2 Değişken Kullanarak)

İnternette çok ilgimi çeken bir bilgi ile karşılaştım. Programlamadan anlayan hekes bilir ki iki değişkenin içinde tutulan datayı birbirleri arasında değiştirebilmesi için üçüncü bir değişken gerekir. A ile B arasındaki değiştirme işlemi üçüncü bir T değişkeni kullanılarak aşağıdaki gibi yapılır :

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önderme

Related Posts Plugin for WordPress, Blogger...