Operator bitwise adalah operasi matematika yang mengoprasikan suatu nilai dalam bilangan biner. Operator bitwise akan bekerja dengan mengubah bilangan desimal menjadi bilangan biner, setelah itu akan melakukan operasi berdasarkan operator bitwise yang digunakan dan pada akhirnya nilai tersebut akan diubah menjadi bilangan desimal kembali.
Operator | Asm equivalent | Keterangan |
---|---|---|
& |
AND | Bitwise AND |
| |
OR | Bitwise OR Inklusif |
^ |
XOR | Bitwise OR Eksklusif |
~ |
NOT | Akan membalikan nilai |
<< |
SHL | Pengeseran bit ke kiri |
>> |
SHR | Pergeseran Bit ke Kanan |
Macam-macam Operator Bitwise
Shift Left ( <<
)
Operator Bitwise Shift Left (<<
) adalah operator yang akan menggeser nilai dalam bentuk bilangan biner ke kiri. Operator ini akan mengubah bilangan desimal menjadi bilangan biner lalu menggeser angka dari bilangan biner tersebut ke kiri dan setelah itu akan mengubahnya kembali ke bilangan desimal.
.
0000 0000 1100 1001 = 201 //menggeser 1 bit ke kiri, Dibagian kanan disisipkan 0, sebanyak bit yang digeser 0000 0001 1001 0010 = 402
Bentuk Penulisan :
Nilai << jumlah;
Contoh Program :
#include <iostream> using namespace std; int main(){ int x; cout<<"Masukan Nilai X = "; cin>>x; cout<<"Nilai Awal : "<<x<<endl; x = x << 1; cout<<"Hasil dari Geser 1 Bit Ke Kiri = "<<x<<endl; return 0; }
Shift Right ( >>
)
Operator Bitwise Shift Right (>>
) adalah operator yang akan mengeser nilai dalam bentuk bilangan biner ke kanan. Operator ini akan mengubah bilangan desimal menjadi bilangan biner setelah itu menggeser angka dari dari bilangan biner tersebut ke kanan dan pada akhirnya akan mengubahnya kembali ke bilangan desimal.
0000 0000 1100 1001 = 201 //digeser 1 bit ke kanan, Dibagian kanan disisipkan 0, sebanyak bit yang digeser dan pada bagian paling kiri akan hilang 0000 0000 0110 0100 = 100
Bentuk Penulisan :
Nilai >> jumlah;
Contoh Program:
#include <iostream> using namespace std; int main(){ int x; cout<<"Masukan Nilai X = "; cin>>x; cout<<"Nilai Awal : "<<x<<endl; x = x >> 1; cout<<"Hasil dari Geser 1 Bit Ke Kanan = "<<x<<endl; return 0; }
AND ( &
)
Operator Bitwise AND ( &
) adalah operator yang akan membandingkan dua operand dalam bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi bilangan biner lalu membandingkanya dengan operand dari sisi lain,
Perbandingan akan berlangsung dari bit ke bit (angka ke angka), membandingkan berdasarkan sifat dari AND yaitu untuk menghasilkan nilai 1
(true) kedua operand harus bernilai 1
(true) jika tidak akan menghasilkan nilai 0
(false).
Dan setelah perbandingan selesai dilakukan, hasil dari perbandingan akan diubah ke bentuk bilangan desimal.
Tabel Operator Bitiwise AND
Bit Operand 1 | Bit Operand 2 | Hasil Operasi |
---|---|---|
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Contoh:
1100 1001 = 201 0110 0100 = 100 -------------------------- AND 0100 0000 = 64
Contoh Program:
#include <iostream> using namespace std; int main(){ int hasil, x, y; cout<<"Masukan Nilai X = "; cin>>x; cout<<"Masukan Nilai Y = "; cin>>y; hasil = x & y; cout<<"Hasil dari "<<x<<" & "<<y<<" = "<<hasil<<endl; return 0; }
OR ( |
)
Operator Bitwise OR ( |
) adalah operator yang akan membandingkan dua operand dalam bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi bilangan biner lalu membandingkanya dengan operand dari sisi lain.
Perbandingan akan berlangsung dari bit ke bit (angka ke angka), membandingkan berdasarkan sifat dari OR yaitu untuk mendapatkan nilai 1
(true) maka salah satu atau semua operand harus bernilai 1
(true), jika semua operand bernilai 0
(false) maka akan mendapatkan nilai 0
(false).
Dan setelah perbandingan selesai dilakukan, hasil dari perbandingan akan diubah ke bentuk bilangan desimal.
Tabel Operator Bitiwise OR
Bit Operand 1 | Bit Operand 2 | Hasil Operator |
---|---|---|
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Contoh :
1100 1001 = 201 0110 0100 = 100 ------------------------OR 11101101 = 237
Contoh Program:
#include <iostream> using namespace std; int main(){ int hasil, x, y; cout<<"Masukan Nilai X = "; cin>>x; cout<<"Masukan Nilai Y = "; cin>>y; hasil = x | y; cout<<"Hasil dari "<<x<<" | "<<y<<" = "<<hasil<<endl; return 0; }
XOR ( ^
)
Operator Bitwise XOR ( ^
) merupakan singkatan dari eXclusive OR adalah operator yang akan membandingkan dua operand dalam bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi bilangan biner lalu membandingkanya dengan operand dari sisi lain,
Perbandingan akan berlangsung dari bit ke bit (angka ke angka), membandingkan berdasarkan sifat dari XOR yaitu untuk mendapatkan nilai 1
(true) maka kedua operand harus memiliki nilai yang berbeda, jika kedua operand memiliki nilai yang sama maka akan mendapatkan nilai 0
( false ).
Dan setelah perbandingan selesai dilakukan, hasil dari perbandingan akan diubah ke bentuk bilangan desimal.
Tabel Operator Bitiwise XOR
Bit Operand 1 | Bit Operand 2 | Hasil Operasi |
---|---|---|
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Contoh :
1100 1001 = 201 0110 0100 = 100 -----------------------XOR 1010 1101 = 137
Contoh Program:
#include <iostream> using namespace std; int main( ) { int a, b, x, y; cout<<"Masukan Nilai X = "; cin>>x; cout<<"Masukan Nilai Y = "; cin>>y; a = x ^ y; b = x ^ y ^ x; cout<<"Hasil dari "<<x<<" ^ "<<y<<" = "<<a<<endl; cout<<"Hasil dari "<<x<<" ^ "<<y<<" ^ "<<x<<" = "<<b<<endl; return 0; }
NOT ( ~
)
Operator Bitwise NOT ( ~
) adalah operator bersifat unary yang akan membalikan nilai di dalam bentuk bilangan biner. Operator ini akan mengubah bilangan desimal menjadi bilangan biner lalu membalikan nilai dari bit ke bit (angka ke angka), jika bit tersebut memiliki nilai 1
( true) maka akan dibalik menjadi 0
(false) begitu pula sebaliknya. setelah operasi selesai maka hasil akhir akan di kembalikan ke bentuk bilangan decimal.
Tabel Operator Bitiwise NOT
Bit Operand | Hasil |
---|---|
0 |
1 |
1 |
0 |
Contoh :
0000 1000 = 8 //menjadi 1111 0111 = 247
Contoh Program:
#include <iostream> using namespace std; int main(){ int a, x; cout<<"Masukan Nilai X = "; cin>>x; a = ~x; cout<<"Hasil dari ~ "<<x<<" = "<<a<<endl; return 0; }
Mungkin pada contoh-contoh di atas hasil penghitungan yang penulis contohkan tidak selalu akurat seperti apa yang telah anda coba dalam contoh program. operator-operator di atas dalam melakukan operasi tergantung pada seberapa besar bit yang digunakan, beberapa contoh di atas penulis contohkan dengan menggunakan penyimpanan sebesar 8 bit.
Contoh Program:
#include <iostream> using namespace std; int main (){ //Variabel int a=10, b=12; int hasilAND, hasilOR, hasilXOR, hasilNOT, hasilSHL, hasilSHR; //Operasi Bitwise hasilAND=a&b; hasilOR=a|b; hasilXOR=a^b; hasilNOT=~a; hasilSHL=a<<1; hasilSHR=a>>1; //Output cout<<hasilAND<<endl; cout<<hasilOR<<endl; cout<<hasilXOR<<endl; cout<<hasilNOT<<endl; cout<<hasilSHL<<endl; cout<<hasilSHR<<endl; return 0; }
Terima kasih ilmunya
Mantap
Terimakasih ilmunya. Sangat bermanfaat.
Untuk yg NOT, hasilnya tidak sama min, diinputkan 8 outputnya -9.
Tapi setelah saya cari lagi, emang gitu. Rumusnya : a=8, maka ~a = -a -1 (
Two’s Complement).