Tutorial Belajar C Part 31: Jenis-jenis Operator Bitwise Bahasa C

Posted on

Melanjutkan pembahasan mengenai operator bahasa C, di panduan ini kita akan mempelajari Pengertian dan Jenis-jenis Operator Bitwise dalam bahasa pemrograman C.


Pengertian Operator Bitwise di Bahasa C

Bitwise yaitu operator khusus untuk menangani operasi logika bilangan biner di format bit.

Bilangan biner sendiri yakni jenis bilangan yang hanya terdiri dari 2 jenis angka, yakni 0 dan 1. Bila nilai asal yang digunakan bukan bilangan biner, akan dikonversi secara otomatis oleh compiler C menjadi bilangan biner. Misalnya 7 desimal = 0111 di bilangan biner.

Di penerapannya, operator bitwise tak terlalu sering digunakan, kecuali rekan rekan sedang menyusun program yang mesti memproses bit-bit komputer. Selain itu operator ini lumayan rumit dan mesti mempunyai pemahaman mengenai program bilangan biner. Di bahasan kali ini saya menganggap rekan rekan telah paham beda antara bilangan biner (basis 2) dan bilangan desimal (basis 10).

Bahasa C mendukung 6 jenis operator bitwise. Daftar lengkapnya dapat dilihat di tabel berikut:

Operator Nama Contoh Biner Hasil (biner) Hasil (decimal)
AND 10 12 1010 1100 1000 8
| OR 10 | 12 1010 | 1100 1110 14
^ XOR 10 ^ 12 1010 ^ 1100 0110 6
NOT 10   1010 0101 -11 (two complement)
<< Left shift 10 << 1 1010 << 1 10100 20
>> Right shift 10 >> 1 1010 >> 1 101 5


Contoh Kode Program Operator Bitwise Bahasa C

Seketika saja kita bahas dengan contoh kode program berikut:

Di contoh di atas, saya mendefinisikan 2 variabel: a dan b. Kemudian memberikan nilai awal 181 dan 108. Bila di konversi ke di format biner, keduanya berisi angka berikut:

Di baris 12 saya mengerjakan operasi (AND) kepada kedua variabel. Operasi bitwise “and” ini akan memproses bit per bit dari kedua variabel, kalau kedua bit sama-sama 1, karenanya hasilnya pun 1, selain kondisi tersebut, nilai akhirnya yaitu 0. Berikut perhitungan bitwise “and”:

Dan dari hasil printf, terlihat bahwa hasilnya yaitu 36 (di format desimal).

Di baris 15 terdapat operasi | (OR), hasilnya akan bernilai 0 kalau kedua bit bernilai 0, selain itu nilai bit akan di set menjadi 1. Berikut cara perhitungan bitwise “or”:

Di baris 18 terdapat operasi ^ (XOR), hasilnya akan bernilai 1 kalau diantara dari kedua variabel bernilai 1 (namun tak keduanya). Atau dengan kata lain kalau kedua bit berlainan, hasilnya 1 tapi kalau sama-sama 0 atau sama-sama 1, hasilnya 0.

Berikut cara perhitungan bitwise “xor”:

Di baris 12, saya menyusun operasi atau not, yang akan membalikkan nilai bit sebuah variabel dari 0 menjadi 1, dan 1 menjadi nol. Namun perhitungan bit not ini sedikit membingungkan karena kalau kita hanya membalikkan seluruh bit saja, hasilnya tak sesuai dengan apa yang dihitung oleh compiler C:

Dari hasil menjalankan program, dapat dilihat bahwa a = -182, dari manakah datangnya angka -182?

Ini berkaitan dengan cara compiler bahasa C menyimpan angka biner (dan pun hampir semua bahasa pemrograman komputer modern). Angka biner di di bahasa C disimpan di format “Two’s complement”. Penjelasan mengenai “Two’s complement” ini lumayan panjang, kalau tertarik saya telah membahasnya komplit di buku Pascal Uncover, atau dapat ke Two’s complement Wikipedia.

Secara singkat, rumusnya yaitu -a - 1, sehingga a = -181 - 1 = -182 (desimal)

Di baris 24, terdapat operator shift right “>>” dimana bahasa C akan menggeser posisi bit di variabel a ke kanan sebanyak 1 tempat. Berikut proses yang terjadi:

Operator shift right menggeser nilai biner variabel a ke arah kanan, sehingga digit betul-betul kanan akan dihapus. Operator shift right ini akan menghasilkan nilai asal / 2. Di contoh kita, hasilnya yaitu 180/2 = 90 (dibulatkan). Setiap penggeseran 1 tempat ke kanan akan membagi 2 nilai asal.

Di baris 27 yaitu operator shift left “<<” dimana nilai variabel b akan digeser sebanyak 2 digit ke kiri. Berikut proses yang terjadi:

Ketika hasil pergeseran ke kiri, digit betul-betul kanan akan diisi angka 0. Setiap penggeseran 1 tempat ke kiri akan mengkali 2 nilai asal. Karena variabel b berisi desim
al 108, karenanya hasil dari << 2 sama dengan 108 * 2 = 216, 216 * 2 = 432.


Di panduan kali ini kita telah mempelajari operator bitwise di bahasa pemrograman C. Di prakteknya, operator bitwise ini tak terlalu sering digunakan. Berikutnya akan dibahas mengenai operator assignment atau operator penugasan bahasa C.


Sumber https://www.duniailkom.com/