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


1 Comment

Tukar Nilai Dua Variabel Tanpa Variabel Ketiga [Programming Quiz #1] - Rumah Coding · April 23, 2017 at 4:49 am

[…] 3. Penggunaan Operator XOR Dan inilah jawaban yang kami pilih, karena keunikannya. Walaupun ada beberapa yang menjawab menggunakan operator XOR, akan tetapi kami memilih penjelasan yang paling lengkap dan logis. Untuk mengetahui jawaban dan penjelasan detail, silahkan baca posting berikut¬†Menukar Nilai Dua Variabel Menggunakan Operator XOR […]

Leave a Reply

Avatar placeholder