Penjelasan Operator Bitwise pada PHP

tutorial belajar PHP untuk pemula

Melanjutkan pembahasan tentang operator, dalam tutorial ini kita saya akan mengulas Pengertian dan Jenis-jenis Operator Bitwise (Bitwise Operator) dalam PHP.

Pengertian Operator Bitwise di PHP

Operator bitwise (Bitwise Operators) ialah operator khusus yang disiapkan PHP untuk menangani proses logika untuk bilangan biner. Bilangan biner atau binary ialah jenis bilangan yang cuma terdiri atas dua macam angka, yaitu 0 dan 1. Bila operand yang dipakai untuk operator ini bukan bilangan biner, maka akan dikonversi dengan otomatis oleh PHP jadi bilangan biner.

Pada prakteknya, operator bitwise tak terlalu biasa dipakai, kecuali kamu membuah program yang langsung terkait dengan pemrosesan bilangan biner.

Dalam tutorial ini saya berasumsi kamu sudah mengetahui cara penulisan, dan perhitungan bilangan biner, bila belum silahkan mempelajarinya terlebih dulu.

Jenis-Jenis Operator Bitwise PHP

PHP mendukung enam macam operator bitwise. List lengkapnya bisa dilihat pada tabel dibawah berikut:

Cara Pemakaian Operator Bitwise pada PHP

Seluruh operator bitwise itu diproses dalam wujud biner. Berikut contoh cara pemakaian operator bitwise dalam PHP:

<?php
$a=0b10110101;
$b=0b01101100;
echo "$a = 10110101 = $a"; echo "<br />";
echo "$b = 01101100 = $b"; echo "<br />";
echo "<br />";
echo "==Hasil Bitwise=="; echo "<br />";
$hasil = $a & $b;
echo "1. $a & $b = $hasil"; echo "<br />";
$hasil = $a | $b;
echo "2. $a | $b = $hasil"; echo "<br />";
$hasil = $a ^ $b;
echo "3. $a ^ $b = $hasil"; echo "<br />";
echo "4. ~$a = ".~$a; echo "<br />";
$hasil = $a >> 1;
echo "5. $a >> 1 = $hasil"; echo "<br />";
$hasil = $b << 2;
echo "6. $b << 2 = $hasil"; echo "<br />";
?>

Pada contoh kode PHP diatas, saya mendefenisikan 2 variabel yaitu $a dan $b, dan memberikan nilai awal berupa angka biner ke dalam kedua variabel itu (cara penulisan angka biner sudah kita bahas pada tutorial Tutorial PHP: Mengenal Tipe Data Integer dan Cara Penulisan Integer dalam PHP)

Variabel $a berisi angka biner: 10110101, yang nilai desimalnya ialah 181, dan variabel $b berisi angka biner: 01101100, yang nilai desimalnya ialah 108.

Dalam contoh 1, saya melakukan operasi & terhadap kedua variabel. Operasi bitwise “and” ini akan memproses bit per bit dari kedua variabel, bila kedua bit sama-sama 1, maka hasilnya juga 1, selain keadaan itu, nilai akhirnya ialah 0. Berikut perhitungan bitwise “and”:

$a =      10110101
$b =      01101100
--------
$a & $b = 00100100 = 36 (desimal)

Dan dari hasil echo, tampak bahwa hasilnya ialah 36 (dalam wujud desimal).

Contoh kedua, untuk operasi I atau or, akan bernilai 0 bila kedua bit variabel bernilai 0, selebihnya nilai bit hasil akan diset jadi 1. Berikut perhitungan bitwise “or”:

$a =      10110101
$b =      01101100
--------
$a | $b = 11111101 = 253 (desimal)

Contoh ketiga, memakai operasi ^ atau xor, dan bit hasil akan bernilai 1 bila salah satu dari kedua variabel bernilai 1, tetapi tidak keduanya. Berikut perhitungan bitwise “xor”:

$a =      10110101
$b =      01101100
--------
$a ^ $b = 11011001 = 217 (desimal)

Contoh keempat, memakai operasi ~ atau not,yang akan membalikkan nilai bit sebuah variabel dari 0 jadi 1, dan 1 jadi nol. Tetapi perhitungan bit not ini sedikit membingungkan, sebab bila kita cuma membalikkan semua bitnya saja, hasilnya tidak sesuai dengan apa yang dihitung oleh PHP, seperti contoh perhitungan berikut:

$a  = 10110101
--------
~$a = 01001010 = 74 (desimal) ==> salah ???

Dari hasil menjalankan program, bisa dilihat bahwa ~$a = -182, darimanakah angka ini? Hal ini terkait dengan metode PHP menyimpan angka biner dengan 32 bit. PHP menyimpan bit dalam perhitungan matematis komputer yang di sebut dengan “Two’s complement” Penjelasan tentang ini bisa kamu baca lebih jauh pada http://en.wikipedia.org/wiki/Two%27s_complement dan http://stackoverflow.com/questions/18754198/confusing-php-bitwise-not-behavior

Tetapi cara perhitungan ringkasnya yaitu sebagai berikut:

$a   = 00000000000000000000000010110101 (32 bit)
--------
~$a  = 11111111111111111111111110110101 (32 bit negative)
Flip & -1 = 00000000000000000000000010110101 - 1
~$a  = -182 (desimal) ==> betul

Sebab PHP memproses memakai 32 bit, maka kita perlu mengikutkan seluruh bit 0 yang ada di depan angka biner dengan total 32 digit, lalu menegatifkannya. Bila angka paling kiri terdapat angka 1, maka ini merupakan arahan kepada PHP bahwa hasilnya akan negatif, dan hasil negatif di flip (dinegatifkan kembali), lalu dikurang 1, sehingga jadi -182 dalam desimal.

Contoh ke 5, ialah operator Shift right dimana PHP akan menggeser variabel $a ke kanan sebanyak 1 tempat. Berikut proses yang terjadi:

$a      = 10110101 = 181
$a >> 1 =  1011010 = 90 (desimal)

Operator shift right menggeser nilai biner variabel $a ke arah kanan, dan digit paling kanan akan dihapus. Operator shift right ini akan menghasilkan nilai asal / 2. Pada contoh, hasilnya ialah 180/2 = 90 (dibulatkan). Setiap penggeseran 1 tempat ke kanan akan membagi 2 nilai asal.

Contoh ke 6 ialah operator Shift Left, dimana PHP menggeser nilai variabel $b sebanyak 2 digit ke kiri. Berikut proses yang terjadi:

$b      =   01101100 = 108
$b << 2 = 0110110000 = 432 (desimal)

Saat hasil pergeseran ke kanan, digit paling kiri akan diisi dengan nilai 0. Setiap penggeseran 1 tempat ke kiri akan mengkali 2 nilai asal.

Dalam tutorial saat ini kita sudah mempelajari operator bitwise dalam PHP. Kamu tak akan sering memakai operator ini. PHP menyediakan operator bitwise untuk kebutuhan khusus.


Butuh Web Developer Makassar atau Jasa SEO di Makassar yang bergaransi? Jangan ragu dengan infanthree.com. Kami juga penyedia Jasa Pembuatan Aplikasi Android di Makassar yang terkemuka. Selain itu ada layanan SEM, SMM, Internet Marketing Agency Makassar dan Social Media, Pembuatan Logo, Konten, Video, Maskot dan Instalasi jaringan ataupun mikrotik, hingga pelatihan komputer dan internet marketing.

Recommended Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *