Untuk menukarkan dua nilai dengan bahasa C tanpa menggunakan variabel sementara, dapat dilakukan dengan memakai operator bitwise Exclusive-OR sebanyak tiga buah. Lihat kode di bawah ini:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
int b;
a = 16;
b = 30;
printf("a=%d b=%d\n", a,b);
a ^= b;
b ^= a;
a ^= b;
printf("a=%d b=%d\n",a,b);
return 0;
}
kode di atas setelah di kompilasi akan menukarkan nilai a dengan nilai b, dimana nilai a = 16 dan nilai b = 30 akan ditukarkan menjadi a = 30 dan b = 16.
Bagaimana cara kerjanya?
Nilai a akan di-XOR-kan dengan nilai b, lalu hasilnya disimpan di a, kemudian nilai b di-XOR-kan dengan nilai a yang telah diubah, ini akan menghasilkan nilai a sebelum diubah lalu nilai ini disimpan ke b. Akhirnya nilai a di-XOR-kan kembali dengan nilai b yang telah diubah, ini akan menghasilkan nilai b sebelum terjadi perubahan.
Ini penjelasannya secara lebih sistematis:
a = 16 desimal --> 10 heksadesimal --> 0001 0000 biner
b = 30 desimal --> 1E heksadesimal --> 0001 1110 biner
pada statement a ^= b dilakukan peng-XOR-an a dengan b:
0001 0000 --> a
0001 1110 --> b
---------- XOR
0000 1110 --> a
hasil peng-XOR-an berupa 0000 1110 disimpan di a,
pada statement b ^= a dilakukan peng-XOR-an b dengan a:
0001 1110 --> b
0000 1110 --> a
---------- XOR
0001 0000 --> b
hasil peng-XOR-an berupa 0001 0000 (16 desimal) disimpan di b,
pada statement a ^= b dilakukan peng-XOR-an b dengan a:
0000 1110 --> a
0001 0000 --> b
---------- XOR
0001 1110 --> a
hasil peng-XOR-an berupa 0001 1110 (30 desimal) disimpan di a.
Sehingga hasil akhirnya berupa;
a = 30 dan b = 16.
Selamat mencoba :).
Blog Archive
-
▼
2009
(20)
-
▼
April
(9)
- Menukar dua buah nilai tanpa menggunakan temporary...
- Simple Enkripsi File
- GUI Sederhana dengan menggunakan pemrograman pragm...
- Review buku A Child Called "It"
- Rosetta Stone V3.2 di Linux dengan menggunakan Wine
- Apa itu Virtual Machine di Linux (Virtualisasi di ...
- Comix, Software untuk mempermudah membaca komik
- Menjalankan Mavis Beacon Teaches Typing Deluxe 17 ...
- Memainkan game Nintendo64 di PC
-
▼
April
(9)
Category
- buku (1)
- Database (2)
- Ebook (1)
- Game (6)
- kilasan (7)
- Konfigurasi Computer (7)
- Open Movie (2)
- Programming (6)
- Sistem (8)
- Slackware news (3)
- Software (15)
Wednesday, April 29, 2009
Subscribe to:
Post Comments (Atom)
0 komentar:
Post a Comment