2.4 OPERATOR BITWISE
Operator bitwise digunakan untuk memanipulasi bit-bit nilai data yang
ada di memori. Operator-operator ini hanya dapat digunakan untuk tipe data
char, int dan long int.
Tabel. Operator Bitwise
Operator
|
Jenjang
|
Fungsi
|
<<
|
5
|
Pergeseran bit ke
kiri
|
>>
|
5
|
Pegeseran bit ke
kanan
|
&
|
8
|
Bitwise AND
|
^
|
9
|
Bitwise XOR
(Exclusive OR)
|
│
|
10
|
Bitwise OR
|
~
|
–
|
Bitwise NOT
|
2.4.1 OPERATOR BITWISE KOMPLEMEN SATU
Operator Bitwise komplemen satu (One’s Complement Operator) kadang-kadang
disebut juga dngan istilah komplementation operator. Operator ini menggunakan
symbol ‘~’ dan merupakan operator Unary yang mempunyai arti bitwise NOT, yaitu
membalik nilai-nilai bit 1 menjadi nilai- nilai bit 0 atau sebaliknya. Misalnya
nilai binary 11011001 maka nilai komplemen satunya adalah nilai binary
00100110.
2.4.2 OPERATOR BITWISE LOGIKA
Tiga buah operator bitwise logika dapat digunakan, yaitu operator bitwise
AND (‘&’), Operator bitwise OR(‘ |’) dan operator bitwise XOR (‘^’). Operator-operator ini menggunakan dua buah operand. Hubungan bit-bit untuk
operator-operator ini dan hasilnya tampak pada tabel berikut
Tabel hubungan Bit dan Hasilnya untuk Operasi Bitwise Logika.
Tabel. Operator Bitwise Logika
Bit
|
AND
b1 & b2
|
OR
b1 |b2
|
XOR
b1 ^ b2
|
|
b1
|
b2
|
|||
1
1
0
0
|
1
0
1
0
|
1
0
0
0
|
1
1
1
0
|
0
1
1
0
|
Contoh:
#include <stdio.h>
main()
{
int X=0x2d; /*bernilai 45 dalam decimal */
int Y=0x1b; /* bernilai 27 dalam decimal */
printf(“%x & %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X&Y);
printf(“%x | %x hasilnya adalah %x (dalam heksadesimal)\n”, X,Y, X|Y);
printf(“%x^ %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X^Y);
}
Jika program ini dijalankan akan didapatkan hasil:
2d & 1b hasilnya adalah 9 (dalam heksadesimal)
2d | 1b hasilnya adalah 3f(dalam heksadesimal)
2d | 1b hasilnya adalah 36 (dalam heksadesimal)
Operator bitwise ‘&’ (AND) banyak digunakan untuk mengecek status dari
suatu bit, apakah bernilai bit 1 atau bernilai bit 0. Misalnya variabel A
adalah tipe char berukuran 1 byte (8 bit) dan bernilai desimal 125 atau
bernilai 0111 1101 dalam binari. Untuk mengetahui apakah bit paling ujung kiri
bernilai 0 ataukah 1, maka dapat dilakukan dengan operasi bitwise AND sebagai
berikut:
& 1000 0000
—————–
0000 0000
Hasil dari operasi bit ini adalah nilai 0, berarti bit yang diperiksa
bernilai 0. Operasi bit ini jika ditulis dalam bentuk nilai desimal akan
berbentuk A & 128. Nilai binari 1000 0000 adalah nilai desimal 128. Untuk
mengecek bit ke dua dari ujung paling kiri dapat dilakukan:
0111 1101
& 0100 0000
————-
0100 0000
Operasi bit ini dapat dituliskan dalam bentuk desimal A & 64. Nilai
binary 0100 0000 dalam desimal adalah nilai 64. Hasil dari operasi ini adalah
nilai desimal 64. Jika hasil untuk yang diperiksa tidak sama dengan 0 berarti
bit tersebut adalah bernilai 1.
Untuk bit ke tiga dari ujung untuk
variabel A dapat diperiksa dengan operasi A & 32 dan seterusnya.
Untuk nilai 1 byte (8 bit) yang diperiksa, penyeleksian operasi bit dengan operator
‘&’ dimulai dengan 128. Nilai 128 ini adalah 2^7.
Untuk nilai 2 byte (16
bit), maka penyeleksian operasi bit dengan operator ‘&’ dimulai
dengan nilai 2^15=32768. Nilai 128,32768 dan seterusnya ini berarti tergantung
dari ukuran tipe datanya dan dapat dirumuskan sebesar 2 pangkat (sizeof(tipe
datanya )*8-1).
#include <stdio.h>
#include <stdio.h>
main()
{
long int D;
unsigned long int Mulai, B;
clrscr()
printf(“ Masukan nilai integer ? “);
scanf (“%ld”, &D);
printf(“\n”);
printf(“Nilai Binarinya =”);
Mulai = pow (2, sizeof(D)*8-1);
for (B=Mulai; B>0; B=B/2)
if ((D&B)==B) printf(“1”);
else printf(“0”);
printf(“\n”);
printf(“Nilai Heksadesimalnya = %lx\n”,D);
}
Jika program ini dijalankan akan didapatkan hasil:
Masukkan nilai integer ? 15000
Nilai Binarinya =00000000000000000011101010011000
Nilai Heksadesimalnya =3a98
2.4.3 OPERATOR PERGESERAN BIT
Dua buah operator yang dapat digunakan untuk pergeseran bit adalah shift
left (‘<<’) dan shift right(‘>>’). Operator-operator ini
membutuhkan dua buah operand. Operand pertama adalah nilai integer yang nilai
bit-bitnya akan digeser dan operand kedua menunjukkan banyaknya pergeseran.
Misalnya ungkapan 125<<2 akan dihasilkan nilai 500 (0x1f4 dalam
heksadesimal) sebagai berikut:
Digeser 2 bit ke kiri = 0000 0001 1111 0100
Sedangkan ungkapan 125>>2 akan dihasilkan nilai 31 (0x1f dalam heksadesimal) sebagai berikut:
Nilai 125 = 0000 0000 0111 1101
Digeser 2 bit ke kanan = 0000 0000 0001 1111
2.4.4 OPERATOR BITWISE PENGERJAAN
Bahasa C juga menyediakan operator-operator pengerjaan untuk bitwise.
Operator-operator ini adalah ‘&=’, ‘^=’, ‘|=’, ‘<<=’ dan ‘>>=’.
Contoh:
Misalkan A adalah variabel tipe integer dengan nilai decimal 125 (0x7d dalam
heksadesimal). Beberapa ungkapan pengerjaan bitwise berikut ini menggunakan
variabel A dan hasil akhirnya tampak sebagai berikut ini.
Tabel. Operator Bitwise Pengerjaan
Ungkapan
|
Ekuivalen dengan
|
Hasil
|
A &=0x1b
A ^=0x1b
A |=0x1b
A <<=2
A >>=2
|
A =A & 0x1b
A =A ^ 0x1b
A =A | 0x1b
A =A <<2
A =A >>2
|
0x19 (25 dalam nilai desimal)
0x66 (102 dalam nilai desimal)
0x7f (127 dalalmm nilai desimal)
0x1f (500 dalam nilai desimal)
0x1f (31 dalam nilai desimal)
|
No comments:
Post a Comment
Berfikirlah kreatif dengan komentar yang bijak. Salam Otomatisasi.!