Jumat, 18 November 2011

C++ Lanjutan 6


3.3 OPERATOR BITWISE

Operator
Deskripsi
Contoh
<< 
Geser n bit ke kiri ( left shift )
m << n
>> 
Geser n bit ke kanan ( right shift )
m >> n
&
Bitwise AND
m & n
|
Bitwise OR
m | n
^
Bitwise XOR
m ^ n
~
Bitwise NOT
~m
NB : Seluruh operator bitwise hanya bisa dikenakan pada operand bertipe data int atau char




Berikut ini diberikan tabel kebenaran untuk operator logika
P = A operator B


AND
OR
A
B
P
0
0
0
0
1
0
1
0
0
1
1
1
A
B
P
0
0
0
0
1
1
1
0
1
1
1
1

XOR

A
B
P
0
0
0
0
1
1
1
0
1
1
1
0



Contoh :
#include <iostream.h>
void main()
{
 int m = 82, n = 26;
 cout<<m<<" << 2"<<" = "<<(m<<2)<<endl;
 cout<<m<<" >> 2"<<" = "<<(m>>2)<<endl;
 cout<<m<<" & "<<n<<" = "<<(m&n)<<endl;
 cout<<m<<" | "<<n<<" = "<<(m|n)<<endl;
 cout<<m<<" ^ "<<n<<" = "<<(m^n)<<endl;
 cout<<"~"<<m<<" = "<<~m<<endl;
 }

Keluarannya :
82 << 2 = 328
82 >> 2 = 20
82 & 26 = 18
82 | 26 = 90
82 ^ 26 = 72
~82 = 83

Penjelasan :
Nilai keluaran diatas, tergantung dari jenis compiler yang digunakan. Hasil diatas merupakan keluaran dari compiler Turbo C++.
Pada Turbo C++ besar dari integer adalah 2 byte atau sama dengan 16 bit, untuk mengetahuinya digunakan perintah


            cout<<sizeof(int)<<endl; // Untuk mengetahui besar dari int
Maka :
8210 =  00000000010100102  dan
2610 =  00000000000110102
Sehingga :
82 << 2 à 00000001010010002 = 32810
82 >> 2 à 00000000000101002  = 2010
82 & 26 à 00000000010100102 
                           00000000000110102
                           ------------------------------------------  &
                           00000000000100102 = 1810
dan begitu juga untuk operasi OR dan XOR.
~82 à digunakan 2’s complement, yaitu
            8210 =  00000000010100102  lalu dinegasikan tiap bitnya menjadi
                        11111111101011012  kemudian LSB ditambah 1 menjadi
                        1111111110101110 = 6545410  nilai ini melebihi jangkauan maksimum int yang berkisar di -32768 sampai 32767, sehingga nilai yang keluar yaitu 83.

Cara lain penulisan dengan menggunakan operator bitwise :
m = m << n     ó        m <<= n
m = m >> n     ó        m >>= n
m = m & n      ó        m &= n
m = m | n        ó        m |= n
m = m ^ n       ó        m ^= n                          

Tidak ada komentar:

Posting Komentar