Monday, June 11, 2012

Mendapatkan Representasi Binary dari Angka Negatif

Bagaimana cara untuk mendapatkan representasi binary (base2) dari suatu angka yang bernilai negatif?

Sebelum mendapatkan representasi binary dari angka negatif, anda harus mendapatkan representasi binary dari angka positifnya terlebih dahulu (misalnya anda ingin mendapatkan representasi binary dari -2, sebelumnya anda harus mendapatkan representasi binary dari 2 terlebih dahulu).

Untuk contoh di sini misalkan angka yang bernilai positif itu adalah 10 (base10). Untuk mengetahui representasi binary dari nilai 10, anda bisa menggunakan metode toString(radix), untuk radix harus diberikan nilai 2.

Di bawah ini adalah menggunakan metode toString() untuk mendapatkan representasi binary dari 10:

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

Contoh kode di atas, metode toString() mengembalikan 1010 (sepanjang 4 bit) sebagai representasi binary dari 10.

Sebagai catatan saja, ketika anda bekerja dengan operator-operator berkategori Bitwise, panjang bit yang ada akan ditreatmen sepanjang 32 bit, di kasus ini untuk 1010 akan menjadi 00000000000000000000000000001010.

Selanjutnya mendapatkan representasi binary nilai negatifnya dari 10, yaitu -10. Untuk hal itu anda bisa menggunakan metode two's complement.

Untuk bekerja dengan metode two's complement:

  1. Pertama-tama dengan mengetahui representasi binary nilai dari kebalikannya -10, yaitu 10 (sebagaimana diatas representasi binary sepanjang 4 bit dari 10 adalah 1010 atau sepanjang 32 bit adalah 00000000000000000000000000001010).
  2. Setelah anda ketahui representasi binary dari 10, selanjutnya anda menyalin bit-bitnya dari kanan kekiri sampai bit 1 yang pertama dijumpai, untuk bit sisanya anda harus komplemenkan (0 ubah menjadi 1, 1 ubah menjadi 0) agar mendapatkan representasi binary nilai negatifnya dari 10, yaitu -10.

Urutan representasi binary sepanjang 32 bit dari 10:

0 (bit ke-32)
0 (bit ke-31)
0 (bit ke-30)
0 (bit ke-29)
0 (bit ke-28)
0 (bit ke-27)
0 (bit ke-26)
0 (bit ke-25)
0 (bit ke-24)
0 (bit ke-23)
0 (bit ke-22)
0 (bit ke-21)
0 (bit ke-20)
0 (bit ke-19)
0 (bit ke-18)
0 (bit ke-17)
0 (bit ke-16)
0 (bit ke-15)
0 (bit ke-14)
0 (bit ke-13)
0 (bit ke-12)
0 (bit ke-11)
0 (bit ke-10)
0 (bit ke-9)
0 (bit ke-8)
0 (bit ke-7)
0 (bit ke-6)
0 (bit ke-5)
1 (bit ke-4)
0 (bit ke-3)
1 (bit ke-2)
0 (bit ke-1), dan untuk mengkonversinya menjadi representasi binary dari -10 ikuti langkah berikut:
  1. Salin (bit ke-1), yaitu 0.
  2. Salin (bit ke-2), yaitu 1 (ini adalah bit 1 yang pertama dijumpai)
  3. Komplemenkan (bit ke-3), 0 menjadi 1.
  4. komplemenkan (bit ke-4), 1 menjadi 0.
  5. Karena setelah (bit ke-4) bit-bitnya adalah 0 semua, ubah 0 semua itu menjadi 1.

Akhirnya didapatkan representasi binary dari -10 sepanjang 32 bit adalah 11111111111111111111111111110110. Karena seperti disebutkan di atas bahwa ketika bekerja dengan operator berkategori Bitwise, panjang bit yang ada akan ditreatmen sepanjang 32 bit.

Jelasnya seperti berikut ini:

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

Untuk semua bit yang berada disebelah kiri dari bit yang berwarna merah (bit yang berwarna merah itu adalah bit 1 yang pertama dijumpai) akan terkena operasi komplemen (0 diubah menjadi 1, 1 diubah menjadi 0).