Friday, 22 July 2011

Operasi Bit Dengan XOR

Sebelum kita melangkah lebih jauh, mari kita bahas terlebih dahulu apa itu Bit?. Bit adalah sebuah digit dalam sistem angka biner (untuk lebih jelasnya tentang Bit). Sekalian belajar Sistem Bilangan Biner. Ada beberapa macam operasi bit seperti NOT, AND, OR, Shift Left, dan Shift Right. Dan tentunya XOR. Kali ini kita akan membahas XOR. XOR atau 'Exclusive OR', adalah operasi bit yang akan menghasilkan nilai 1 jika kedua bit berbeda. Berbeda dengan OR yang akan menampilkan nilai 1 untuk perbandingan '1 OR 1'. Dalam bahasa C biasa dilambangkan dengan '^' (dibaca 'caret' atau 'tanda sisipan', misal 'a^b'). Untuk lebih jelasnya lihat potongan kode berikut:


...
    //26 = 11010
    //12 = 01100
    //22 = 10110 <-- hasil
 
    int a = 26 xor 12; // atau 26 ^ 12
    printf("%d", a);
...

Dapat dilihat pada baris komentar operasi yang terjadi dalam biner. Perubahan apa saja yang terjadi pada setiap digit baris yang berurutan, misal 1 ketemu 0 hasilnya 1, dan selanjutnya. Operasi ini juga dapat digunakan dalam logika perpindahan nilai antara 2 variabel, seperti pada kode berikut ini:


#include < stdio.h >

int main(int argc, char *argv[])
{

    int a = 30,
        b = 15;

    printf("Nilai a = %d\nNilai b = %d\nsebelum ditukar", a,b);

    a = a xor b;
    b = a xor b;
    a = a xor b;

    printf("\n\n");
    printf("Nilai a = %d\nNilai b = %d\nsetelah ditukar",a,b);

    return 0;
}

Bagaimana cara kerjanya? perhatikan kode berikut:

int a = 30,
    b = 15;
  
a = a xor b; //pertama
16 8 4 2 1 <- desimalnya
1  1 1 1 0 <- biner
0  1 1 1 1 <- biner
---------- xor
1  0 0 0 1 = 17 

b = a xor b; //kedua
16 8 4 2 1
1  0 0 0 1 <- nilai a telah berubah
0  1 1 1 1
---------- xor
1  1 1 1 0 = 30


a = a xor b; //ketiga
16 8 4 2 1
1  0 0 0 1
1  1 1 1 0
---------- xor
0  1 1 1 1 = 15

Masih banyak manfaat dari operasi bit XOR, selain menukar 2 nilai variabel berbasarkan nilai bitnya. So, happy coding...

- krofz

2 comments:

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top