Menukar Nilai Dua Variabel Menggunakan Operator XOR

Kebanyakan programmer ketika menukar nilai dua buah variabel, misal variabel x dan y membutuhkan bantuan variabel ketiga, seperti contoh berikut:

tmp = x
x = y
y = tmp

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.

x = x ^ y
y = x ^ y
x = x ^ y

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

x1 = x ^ y
y1 = x1 ^ y
x2 = x1 ^ y1

Berdasarkan kode sebelumnya, x2 memiliki nilai yang sama dengan y. Mari kita buktikan:

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

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.

y1 = x1 ^ y
y1 = (x ^ y) ^ y
y1 = x ^ (y ^ y)
y1 = x ^ 0
y1 = x                  // y1 sama dengan nilai x

Terbukti bahwa nilai y1 sama dengan nilai x. Selamat mencoba