Bitwise Operator Pada Pemrograman Arduino

Salah satu fitur penting dalam pemprograman arduino adalah kemampuan manipulasi data pada tingkat bit, dengan begitu, kita bisa secara langsung menulis pada register hardware yang terhubung pada arduino, melakukan komunikasi serial menggunakan protokol I2C atau SPI, serta juga bisa mengambil data mentah dari sensor dan mengolahnya menjadi informasi yang kita perlukan.  

Untuk melakukan manipulasi data pada tingkat bit, kita perlu mempelajari tentang bitwise operator. Sekarang langsung saja kita bahas tentang operator ini :

Bitwise AND (&) 

Berfungsi untuk melakukan operasi bilangan biner antara dua nilai integer, dimana setiap bit dari dua nilai tersebut akan dibandingkan dan hasilnya mengikuti syarat kondisi logika AND. Pada logika AND, jika kedua bit bernilai 1 maka outputnya bernilai 1, selain itu hasilnya akan nol. 

Ayo kita coba langsung ke program, ketik program di bawah ini

Upload program dan buka serial monitor, hasilnya sama dengan gambar dibawah ini

Terlihat pada serial monitor bahwa hasil operasi bitwise and antara variabel a dan b adalah 73. Kenapa bisa hasilnya 73 ? coba lihat gambar dibawah

bit ke-0 variabel a dibandingkan dengan bit ke-0 variabel b, karena keduanya bernilai 1 maka, outputnya bernilai 1 (sesuai dengan syarat logika AND). Begitu seterusnya sampai dengan bit ke-7. Sehingga didapat output dari operasi tersebut adalah 01001001, bilangan biner itu jika dikonversi ke desimal adalah 73.

bitwise OR (|)

Berfungsi untuk melakukan operasi bilangan biner antara dua nilai integer, dimana setiap bit dari dua nilai tersebut akan dibandingkan dan hasilnya mengikuti syarat kondisi logika OR. Pada logika OR, jika salah satu bit atau keduanya bernilai 1, maka outputnya adalah 1, selain itu outputnya 0

Kita langsung ke contoh program

upload program dan buka serial monitor, hasilnya sama dengan gambar dibawah ini

Terlihat pada serial monitor bahwa hasil operasi bitwise or antara variabel a dan b adalah 125. 

bit ke-0 variabel a dibandingkan dengan bit ke-0 variabel b, karena keduanya bernilai 1 maka, outputnya bernilai 1 (sesuai dengan syarat logika OR). Begitu seterusnya sampai dengan bit ke-7. Sehingga didapat output dari operasi tersebut adalah 01111101, bilangan biner itu jika dikonversi ke desimal adalah 125.

bitwise XOR (^)

Berfungsi untuk melakukan operasi bilangan biner antara dua nilai integer, dimana setiap bit dari dua nilai tersebut akan dibandingkan dan hasilnya mengikuti syarat kondisi logika XOR. Pada logika XOR, output akan bernilai 1 jika inputnya berbeda nilai.

upload program dan buka serial monitor, hasilnya sama dengan gambar dibawah ini

Terlihat pada serial monitor bahwa hasil operasi bitwise xor antara variabel a dan b adalah 52. 

bit ke-0 variabel a dibandingkan dengan bit ke-0 variabel b, karena keduanya bernilai 1 maka, outputnya bernilai 0 (sesuai dengan syarat logika XOR). Begitu seterusnya sampai dengan bit ke-7. Sehingga didapat output dari operasi tersebut adalah 00110100, bilangan biner itu jika dikonversi ke desimal adalah 52.

bitwise NOT (~)

Tidak seperti bitwise AND dan OR, bitwise NOT hanya diterapkan pada satu operand saja. Ketika suatu nilai memakai bitwise NOT maka setiap bit-nya akan dibalik kondisi (bit 0 akan menjadi bit 1 dan sebaliknya).

bitwise NOT bisa menyebabkan suatu nilai integer menjadi negatif, itu karena bit paling kiri dari data integer nilainya dibalik. bit ini disebut sign bit, yaitu bit yang menentukan nilai negatif atau positif. Sign bit 0 membuat variabel bertanda positif, sehingga jika sign bit berubah menjadi 1, nilai variabel akan bertanda negatif.

Bitshift kanan (>>)

berfungsi untuk menggeser seluruh bit ke kanan sebesar nilai yang diinginkan.

X adalah sebuah nilai yang bit nya akan digeser, tipe data yang diizinkan adalah byte, long, int. sedangkan n adalah jumlah pergeseran bit yang dilakukan. Output dari operasi ini adalah sebuah nilai hasil pergeseran bit nilai X yang digeser ke kanan sebesar n. Contoh, nilai X adalah 5, bilangan binernya 0b00000101, kita melakukan operasi X >> 1, ini menyebabkan bilangan biner nilai X akan bergeser 1 ke kanan, sehingga hasilnya adalah 0b00000010 bilangan desimalnya adalah 2. 

Bitshift kiri (<<)

Berfungsi untuk menggeser seluruh bit ke kiri sebesar nilai yang
diinginkan. 

X adalah sebuah nilai yang bit nya akan digeser, tipe data yang diizinkan adalah byte, long, int. sedangkan n adalah jumlah pergeseran bit yang dilakukan. Output dari operasi ini adalah sebuah nilai hasil pergeseran bit nilai X yang digeser ke kiri sebesar n. Contoh, nilai X adalah 5, bilangan binernya 0b00000101, kita melakukan operasi X << 2, ini menyebabkan bilangan biner nilai X akan bergeser 1 ke kiri, sehingga hasilnya adalah 0b00010100 bilangan desimalnya adalah 20. 

Sekarang ayo kita coba menerapkannya pada program

upload program dan buka serial monitor, hasilnya sama dengan gambar dibawah ini

Sekarang ayo kita bedah hasilnya, kenapa nilai variabel X ketika di shift ke kanan (>>) hasilnya jadi 2 dan ketika di shift ke kiri (<<) hasilnya menjadi 20 ?. 

Desimal 5 (Variabel X) bilangan biner nya 0101, ketika di shift ke kanan (>>) sekali, Least Significant Bit (LSB) akan dihilangkan kemudian ditambahkan 0 didepan Most Significant Bit dan menggeser bit yang lainnya ke kanan. 

0101 >> 0010

Sedangkan di shift ke kiri (<<) 2 kali, bilangan biner akan ditambahkan 0 dibelakang Least Significcant Bit (LSB) dan menggeser semua bit nya ke kiri.

0101 << 10100

215 pemikiran pada “Bitwise Operator Pada Pemrograman Arduino”

  1. 益群网:终身分红,逆向推荐,不拉下线,也有钱赚!尖端资源,价值百万,一网打尽,瞬间拥有!多重收益,五五倍增,八级提成,后劲无穷!网址:1199.pw

    Balas

Tinggalkan Balasan ke Stanley1783 Batalkan balasan