Operator Bitwise Bahasa C dan Fungsinya
- Operator bitwise AND '&' pada bahasa C dan C++ akan mengambil dua jenis angka sebagai operand dan menerapkan logika AND pada setiap bit dari dua angka. Hasil dari operator AND adalah 1 hanya jika kedua bit adalah bernilai 1.
- Operator bitwise OR '|' pada bahasa C dan C++ akan mengambil dua jenis angka sebagai operand dan menerapkan logika OR pada setiap bit dari dua angka. Hasil dari operator OR adalah 1 jika salah satu dari dua bit adalah 1.
- Operator bitwise XOR (exlusive or) '^' pada bahasa C dan C++ akan mengambil dua jenis angka sebagai operand dan menerapkan logika XOR pada setiap bit dari dua angka. Hasil dari operator XOR adalah 1 jika dua bit bernilai beda.
- Operator bitwise left shift '<<' pada bahasa C dan C++ akan mengambil dua jenis angka dan geser kiri dari operand pertama, dan operand kedua memutuskan angka mana dari lokasi yang akan digeser.
- Operator bitwise right shift '>>' pada bahasa C dan C++ akan mengambil dua jenis angka dan geser kanan dari operand pertama, dan operand kedua memutuskan angka mana dari lokasi yang akan digeser.
- Operator bitwise NOT '~' pada bahasa C dan C++ akan mengambil satu angka dan membalikkan nilai bit dari semua angka tersebut.
// Program bahasa C untuk
// mendemonstrasikan kegunaan
// dari operator bitwise
#include <stdio.h>
int main()
{
// a = 5(00000101)
// b = 9(00001001)
unsigned char a = 5, b = 9;
// Hasilnya adalah 00000001
printf("a = %d, b = %d\n", a, b);
printf("a&b = %d\n", a & b);
// Hasilnya adalah 00001101
printf("a|b = %d\n", a | b);
// Hasilnya adalah 00001100
printf("a^b = %d\n", a ^ b);
// Hasilnya adalah 11111010
printf("~a = %d\n", a = ~a);
// Hasilnya adalah 00010010
printf("b<<1 = %d\n", b << 1);
// Hasilnya adalah 00000100
printf("b>>1 = %d\n", b >> 1);
return 0;
}
a&b = 1
a|b = 13
a^b = 12
~a = 250
b<<1 = 18
b>>1 = 4
satu, Operator left shift dan right shift tidak bisa digunakan untuk nilai negatif. Jika setiap operand bernilai negatif, maka hasilnya adalah tidak terdefinisi. Contoh hasil dari ketua persamaan berikut -1<<1 dan 1<<-1 adalah tidak terdefinisi. Juga, jika angka bergeser lebih dari ukuran integer, maka behavior-nya adalah tidak terdefinisi. Contoh, 1 << 33 adalah tidak terdefinisi jika integer disimpan menggunakan 32bit.
dua, Operator bitwise XOR adalah operator yang paling berguna dari sudut pandang technical interview. Karena operator ini digunakan pada banyak permasalahan. Contoh sederhana "diberikan satu set angka dimana semua elemen terjadi beberapa kali, kecuali satu angka, temukan angka ganjil yang muncul dalam kejadian", permasalah tersebut akan lebih efisien penyelesaiannya jika menggunakan operator XOR untuk semua angka.
#include <stdio.h>
// Berfungsi untuk
// mengembalikan satu-satunya
// elemen yang muncul ganjil
int findOdd(int arr[], int n)
{
int res = 0;
int i;
for (i = 0; i < n; i++)
res ^= arr[i];
return res;
}
// Driver Method
int main(void)
{
int arr[] = { 12, 12, 14, 90, 14, 14, 14 };
int n = sizeof(arr) / sizeof(arr[0]);
printf("The odd occurring"
" element is %d ",
findOdd(arr, n));
return 0;
}
Contoh lain untuk jenis permasalah yang bisa diselesaikan dengan lebih efisien jika menggunakan operator XOR.
- Menemukan angka hilang dari deret.
- Penukaran dua angka tanpa menggunakan variabel sementara.
- Efisiensi memori dengan Double Linked List.
- Menemukan dua elemen tidak berurutan.
- Menemukan dua angka dengan kejadian ganjil dalam unsorted-array.
- Penambahan dua angka tanpa menggunakan operator aritmatika.
- Menukar bit dari angka yang diberikan.
- Menghitung angka dari bit yang akan dibalik untuk konversi a ke b.
- Menemukan elemen yang hanya muncul sekali.
- Mendeteksi jika dua integer memiliki tanda berlawanan.
tiga, Operator bitwise tidak seharusnya digunakan pada lokasi dari operator logika. Hasil dari operator logika adalah 0 atau 1 (true atau false), tetapi operator bitwise mengembalikan nilai integer. Juga, operator logika mempertimbangkan operand non-zero apapun seperti 1. Contoh, perhatikan program berikut ini, hasil dari & dan && adalah berbeda meskipun pada operand yang sama.
#include <stdio.h>
int main()
{
int x = 2, y = 5;
(x & y) ? printf("True ") : printf("False ");
(x && y) ? printf("True ") : printf("False ");
return 0;
}
empat, Operator left-shift dan right-shift adalah senilai untuk perkalian dan pembagian oleh 2 secara berurutan. Seperti yang dijelaskan pada point satu, hanya dapat bekerja jika angka bernilai positif.
#include <stdio.h>
int main()
{
int x = 19;
printf("x << 1 = %d\n", x << 1);
printf("x >> 1 = %d\n", x >> 1);
return 0;
}
x >> 1 = 9
lima, Operator & dapat digunakan untuk pemeriksaan cepat jika angka bernilai ganjil atau genap.
Nilai dari ekspresi (x & 1) hanya dapat bernilai non-zero jika x adalah angka ganjil, jika tidak maka nilai akan bernilai 0.
#include <stdio.h>
int main()
{
int x = 19;
(x & 1) ? printf("ganjil") : printf("genap");
return 0;
}
enam, Operator ~ harus digunakan secara hati-hati. Hasil dari operator ~ pada nilai angka kecil dapat berupa angka besar jika hasilnya disimpan dalam variabel unsigned. Dan hasilnya juga dapat berupa angka negatif jika disimpan dalam variabel signed (diasumsikan angka negatif disimpan pada 2 komplemen dimana bit paling kiri adalan sign bit).
// Perhatikan bahwa keluaran
// dari program berikut ini
// bergantung pada kompilator
// yang digunakan
#include <stdio.h>
int main()
{
unsigned int x = 1;
printf("Hasil dari Signed"
" adalah %d \n", ~x);
printf("Hasil dari Unsigned"
" adalah %u \n", ~x);
return 0;
}
Hasil dari Unsigned adalah 4294967294d
- 2 Cara Penggunaan Operand untuk Operator Sizeof pada Bahasa C
- 2 Fungsi Utama Operator Koma dalam Bahasa C
- Hasil Operator Koma Sebagai Nilai I pada Bahasa C
- Penjelasan Singkat, Perintah Operand Untuk Operator Logika Bahasa C
- Penjelasan Singkat, Operator Inkrementasi dan Ekspresi L-value pada Bahasa C
- Penjelasan Singkat, Predesesor Postfix dan Prefix ++ Bahasa C
- 4 Contoh Program Modulus Angka Negatif pada Bahasa C
5 komentar untuk "Operator Bitwise Bahasa C dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan operator bitwise dalam bahasa C?
BalasHapusOperator bitwise adalah sekumpulan operator khusus yang disediakan oleh bahasa C, operator tersebut digunakan oleh bahasa C dalam pemrograman tingkat satuan bit. Operator bitwise digunakan untuk memanipulasi nilai bit dari ekspresi integer.
HapusOperator bitwise digunakan untuk mengubah nilai bit satuan dalam sebuah operan. Satu byte memori komputer jika dilihat sebagai satuan yang lebih kecil adalah terdiri dari 8 bit, dari satu 8 bit tersebut kemudian dapat digunakan sebagai penanda status benar dan salah dari 8 tanda berbeda, karena setiap bit dapat digunakan sebagai nilai boolean yang dapat menampung salah satu dari dua kemungkinan nilai (TRUE atau FALSE).
BalasHapusBagaimana operator logika AND dan OR bitwise bekerja pada bahasa C?
BalasHapusOperator & (bitwise AND) pada bahasa C dan C++ bekerja dengan cara menggunakan dua angka sebagai nilai operan dan melakukan perhitungan dengan logika AND pada setiap bit dari dua nilai atau angka dari operan yang digunakan tersebut. Hasil dari logika AND adalah bernilai 1 atau TRUE jika kedua nilai bit tersebut adalah bernilai 1 atau TRUE.
HapusSedangkan operator | (bitwise OR) pada bahasa C dan C++ bekerja dengan cara menggunakan dua nakg sebagai nilai operan dan melakukan perhitungan dengan logika OR jika SALAH SATU dari dua bit nilai operan tersebut bernilai 1 atau TRUE.