//Tambahan //Akhir tambahan Fungky Corporation: OPERATOR BITWISE

MAU PESAN ALAT BIDANG ELEKTRONIKA? KAMI FUNGKY CORPORATION SIAP MEMBANTU. HUBUNGI :

Email: fungkyking01@gmail.com | FB/TWITTER/YOUTUBE : FUNGKYKING |

WA (WhatsApp) Only : 0838 (Libur)


Lokasi Yogyakarta.

Tuesday, 15 November 2016

OPERATOR BITWISE


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:

0111 1101
&             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).

Contoh:

#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:

Nilai 125                    = 0000 0000 0111 1101
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.!

//Tambahan //akhir