Operator logik yang dipakai dalam C++ adalah :
Simbol |
Operasi |
& |
AND |
| |
OR |
^ |
Exclusive OR |
<< |
Shift left |
<< |
Shift right |
~ |
One’s complement |
Operator-operator logic ini melakukan manipulasi bit pada data integer atau character. Karena yang dimanipulasi adalah bit maka lebih enak kalau contoh contoh berikut ini dikonversi dari sistem bilangan desimal, yaitu sistem bilangan berbasis 10, ke sistem bilangan biner, yaitu sistem bilangan yang berbasis 2. Konversi dari sistem bilangan desimal ke sistem bilangan biner lebih mudah kalau dilewatkan sistem bilangan heksadesimal (berbasis 16) dulu. Program berikut ini memakai sebagian dari operator-operator di atas.
// C7_2.CPP
#include <iostream.h>
main()
{
int x1 = 67&63;
int x2 = 67 | 63;
int x3 = ~128 & 255;
int x4 = 9^5;
// Bitwise AND
cout << x1 << “\n”;
//Bitwise OR
cout << x2 << “\n”;
// Bitwise Complement
cout << x3 << “\n”;
// Bitwise XOR
cout << x4;
return 0;
}
Operator &
Suatu pernyataan : 67 & 63 dapat dikonversi dan diproses sebagai berikut:
Operator |
Suatu pernyataan : 67 | 63 dapat dikonversi dan diproses sebagai berikut:
Operator ~
Yang dirnaksud dengan one’s complementing adalah melakukan pembalikan dari bit,misal: 12810 = 00000000100000002 jika semua bit dibalik menjadi:
~12810 = -12910 = 11111111011111112. Kita dapat membatasi outputnya menjadi 8 bit saja dengan melakukan AND masking dengan & 00000000111111112 yaitu & 225.
Suatu pernyataan : -128 & 255 dapat dikonversi dan diproses sebagai berikut:
Operator ^
Suatu pernyataan : 9 ^ 5 dapat dikonversi dan diproses sebagai berikut:
Operator << dan >>
Operator << melakukan pergeseran posisi bit kekiri dari operan sebelah kiri sebanyak yang ditunjukkan oleh operan kanan. Pada setiap proses pergeseran sebelah kanan diisi nol, misalnya: 12 << 310 menjadi 10002 = 810. Operator >> berlaku sebaliknya.
Unary & Operator
Unary & operator dipakai untuk menyatakan suatu reference. Dalam C++ suatu reference dapat dipandang sebagai alias dari suatu variabel. Pada waktu suatu reference dideklarasi, biasanya diasosiasikan dengan suatu variabel sehingga reference ini secara permanen berasosiasi dengan variabel tersebut, keadaan ini tidak dapat diubah misalnya merubah reference tersebut untuk menjadi alias dari suatu variabel yang lain. Contoh program berikut ini mendeklarasi suatu bilangan bulat bemama inl_sebenarnya dan membentahu komputer bahwa intj sebenaniya mempunyai nama lain yaitu int_aliwnya. Juga ditunjukkan bahwa operas; pada salah satunya akan berakibat sama pada yang satunya lagi.
//C8_2.CPP
#include (iostream.h>
main()
{
int int_sebenarnya = 123;
int &int_aliasnya = int_sebenarnya;
cout << ‘\n’ << int_sebenarnya; //123
cout << ‘\n’ << int_aliasnya; // 123
int_aliasnya++;
cout << ‘\n’ << int_sebenarnya; // } 124
cout << ‘\n’ << int_aliasnya; // 124
int_sebenarnya++;
cout << ‘\n’ << int_sebenarnya; //125
cout << ‘\n’ << int_aliasnya; // 125
// Cetak alamat-alamatnya
cout << ‘\n’ << &int_sebenarnya << ” ”
<< &int_aliasnya;
}
Perlu diperhatikan bahwa :
- suatu reference bukan duplikat dari variabel yang diasosiasikan dengan reference tersebut. Program di atas menunjukkan keduanya mempunyai alamat yang sama.
- pemakaian unary & operator tergantung pada konteknya. Pada deklarasi dari variabel inl_al.iawya, unary & operator adalah bagian dari tipe variabel int_aliasnya, yaitu variabel ml_aliasnya mempunyai tipe int & atau reference ke suatu int. Pada pernyataan cout, unary & operator dipakai untuk mendapatkan alamat yang diasosiasikan dengannya.