Monday, June 11, 2012

>> (Bitwise Right Shift)

Operator >> (Bitwise Right Shift) digunakan untuk menggeser bit-bit sebelah kanan dari operand A ke kanan sebanyak yang ditentukan oleh operand B.

Sintaks:

A >> B

Operator >> adalah operator standard JavaScript 1.0+, JScript 1.0+, ECMAScript 1.0+ dan di dukung Google Chrome Beta+, Firefox 1.0 (Gecko 1.7)+, Internet Explorer 3+, Netscape Navigator 2.0+, Opera 3.0+, Safari 1.0+.

Jika operand A adalah bilangan bulat positif setiap pergeseran sejumlah tertentu bit dibagian kanan akan hilang, dan akan memunculkan 0 dibagian kiri yang jumlahnya sama banyak dengan bit yang yang hilang tersebut. Namun jika operand A adalah bilangan bulat negatif setiap pergeseran sejumlah tertentu bit dibagian kanan akan hilang, dan akan memunculkan 1 dibagian kiri yang jumlahnya sama banyak dengan bit yang yang hilang tersebut, hal ini untuk menjaga tanda kenegatifannya, karena di dalam representasi base2, bit 0 teratas (bit paling kiri) digunakan sebagai penanda positif, dan bit 1 teratas (bit paling kiri) digunakan sebagai penanda negatif, sebagai contoh:

00000000000000000000000000001010 (representasi binary dari 10)
11111111111111111111111111110110 (representasi binary dari -10)

Cara kerja operator ini pertama-tama mengkonversi nilai dari operand A ke dalam base2 (binary). Setelah nilai dari operand A tersebut didapatkan representasi base2-nya, bit-bit dari operand A yang ada di sebelah kanan tersebut digeser ke kanan sebanyak yang ditentukan oleh operand B. Untuk bilangan bulat positif setiap pergeseran sejumlah tertentu bit dibagian kanan akan hilang, dan akan memunculkan 0 dibagian kiri yang jumlahnya sama banyak dengan bit yang yang hilang tersebut. Untuk bilangan bulat negatif setiap pergeseran sejumlah tertentu bit dibagian kanan akan hilang, dan akan memunculkan 1 dibagian kiri yang jumlahnya sama banyak dengan bit yang yang hilang tersebut.

Untuk mendapatkan representasi base2 dari nilai bilangan bulat positif, anda bisa gunakan metode Number.toString(radix), untuk radix harus diberikan nilai 2. Misalnya ingin mengetahui representasi base2 dari nilai 10, jika dijalankan dengan metode Number.toString(), nilai 10 mempunyai representasi base2-nya 1010:

var A = 10; document.write(A.toString(2)); //1010

Karena di dalam atau ketika bekerja dengan operator berkategori Bitwise, panjang bit yang ada akan ditreatmen sepanjang 32-bit, 1010 akan menjadi 00000000000000000000000000001010.

Untuk mendapatkan representasi base2 dari nilai bilangan bulat negatif, anda dapat merujuk ke artikel Mendapatkan Representasi Binary dari Angka Negatif.

Contoh operasi operator Bitwise Right Shift untuk bilangan bulat positif:

var A = 35; var B = 2; document.write(A >> B); //8

Representasi base2 dari 35 adalah 00000000000000000000000000100011, di dalam kasus contoh di atas bit-bit sebelah kanan dari 00000000000000000000000000100011 akan digeser ke kanan sebanyak 2. Untuk bit-bit yang berwarna merah di bawah adalah bit-bit yang akan hilang, karena adanya operasi pergeseran bit ke kanan sebanyak 2:

00000000000000000000000000100011

Karena di dalam operator ini untuk bilangan bulat positif, banyaknya bit yang hilang disebelah kanan akan memunculkan 0 (lihat bit-bit yang berwarna biru) dibagian kiri yang sama banyaknya dengan bit yang hilang dibagian kanan, dan akan menjadi:

00000000000000000000000000001000

Untuk 00000000000000000000000000001000 mempunyai nilai yang sama seperti nilai 8 (base10).

Contoh operasi operator Bitwise Right Shift untuk bilangan bulat negatif:

var A = -35; var B = 2; document.write(A >> B); //-9

Representasi binary dari -35 adalah 11111111111111111111111111011101, di dalam kasus contoh di atas bit-bit sebelah kanan dari 11111111111111111111111111011101 akan digeser ke kanan sebanyak 2. Untuk bit-bit yang berwarna merah di bawah adalah bit-bit yang akan hilang, karena adanya operasi pergeseran bit ke kanan sebanyak 2:

11111111111111111111111111011101

Karena di dalam operator ini untuk bilangan bulat negatif, banyaknya bit yang hilang disebelah kanan akan memunculkan 1 (lihat bit-bit yang berwarna biru) dibagian kiri yang sama banyaknya dengan bit yang hilang dibagian kanan, dan akan menjadi:

11111111111111111111111111110111

Untuk 11111111111111111111111111110111 mempunyai nilai yang sama seperti nilai -9 (base10).