XOR SWAP, algoritma swapping yang unik

jika anda di suruh buat sebuah algoritma untuk mempertukarkan nilai dari dua buah variabel yang setipe, gimana caranya? ini mungkin pertanyaan yang sangat sederhana, bahkan bagi seorang pemula dalam dunia pemrograman, mungkin jawaban anda dapat tergambar dalam algoritma seperti ini:

  1. misalnya variabel – variable yang akan di pertukarkan nilainya adalah A dan B
  2. buat sebuah variabel penampung, misal C
  3. beri nilai C dengan nilai A
  4. beri nila A dengan nilai B
  5. beri nilai B dengan nilai C

atau dalam bahasa c/c++ sebagai berikut:

void swap(int *A, int *B){
	int C;
	if (A != B){
	   C = *A;
	   *A = *B;
	   *B = C:
	}
}

tapi taukah anda, bahwa anda juga dapat membuat kode program berikut untuk operasi swap

void xorswap(int *A, int *B){
	if (A != B){
	   *A ^= *B;
	   *B ^= *A;
	   *A ^= *B;
	}
}

inilah yang disebut dengan algoritma xor swap, dengan memanfaatkan aturan closure pada operasi binary, muncullah algoritma xor swap ini. gak percaya bahwa algoritma bisa jalan? ok, saya gak bisa maksa anda percaya, jadi saya persilahkan anda untuk menanyakannya ke mesin, ambil compiler anda, tulis kode program seperti di atas, compile, terus jalankan……nah, percaya kan :)

2 thoughts on “XOR SWAP, algoritma swapping yang unik

  1. nunu kok juga sampe disini , haduh jadi malu nih.

    bisa juga tuh untuk bilangan numeric.
    addswap kayak gini juga bisa

    *x = *x + *y;
    *y = *x - *y;
    *x = *x - *y;

    siplah punya kamu itu juga, tapi untuk bilangan numeric, harus dipastikan bahwa hasil

    a+b

    tidak overflow, begitu…:)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s