Kebanyakan programmer ketika menukar nilai dua buah variabel, misal variabel x
dan y
membutuhkan bantuan variabel ketiga, seperti contoh berikut:
[sourcecode]
tmp = x
x = y
y = tmp
[/sourcecode]
Akan tetapi ada sebuah trik yang sangat jitu. Trik ini memungkinkan anda menukar nilai dua buah variabel tanpa menggunakan variabel ketiga, yaitu dengan menggunkan operator XOR
.
[sourcecode]
x = x ^ y
y = x ^ y
x = x ^ y
[/sourcecode]
Anda bisa langsung mencobanya menggunakan bahasa pemrograman apa saja. Cara ini bisa digunakan untuk menukar nilai variabel yang bertipe integer ataupun string. Kode tersebut bekerja hampir seperti sihir. Dua buah nilai secara ajaib tertukar, tanpa anda tahu apa yang sebenarnya terjadi. Baiklah saya akan bahas cara kerja operator XOR
hingga bisa menukar nilai dua variabel.
Cara Kerja
Untuk membantu memahami trik ini, saya gunakan variabel lain untuk menampung hasil dari operasi XOR
[sourcecode]
x1 = x ^ y
y1 = x1 ^ y
x2 = x1 ^ y1
[/sourcecode]
Berdasarkan kode sebelumnya, x2
memiliki nilai yang sama dengan y
. Mari kita buktikan:
[sourcecode]
x2 = x1 ^ y1
x2 = x1 ^ (x1 ^ y) // subtitusi y1
x2 = (x1 ^ x1) ^ y // operasi xor bersifat asosiatif
x2 = 0 ^ y // a ^ a hasilnya adalah 0
x2 = y // 0 ^ a hasilnya a, sehingga nilai x2 sama dengan nilai y
[/sourcecode]
Terbukti bahwa nilai x2
sama dengan nilai y
. Itu artinya proses penukaran nilai berhasil. Sekarang kita buktikan juga untuk variabel y1
. Berdasarkan kode sebelumnya, nilai y1
seharusnya sama dengan nilai x
.
[sourcecode]
y1 = x1 ^ y
y1 = (x ^ y) ^ y
y1 = x ^ (y ^ y)
y1 = x ^ 0
y1 = x // y1 sama dengan nilai x
[/sourcecode]
Terbukti bahwa nilai y1
sama dengan nilai x
. Selamat mencoba