Saturday, 21 March 2015

5.3.5.Operasi Bitwise

Python juga mensupport operasi bitwise seperti pada bahasa C. Apa itu bitwise? Dasar dari bitwise adalah binary bit, angka binary dimaninpulasi untuk mendapatkan nilai yang lain. Contohnya nilai dari integer 20 adalah 10100. 

  • >>> bin(0),bin(1),bin(2),bin(3),bin(4),bin(5),bin(6),bin(7),bin(8)
  • ('0b0', '0b1', '0b10', '0b11', '0b100', '0b101', '0b110', '0b111', '0b1000')
  • >>> 

Cara menghitung binary secara manual:

27
26
25
24
23
22
21
20
128
64
32
16
8
4
2
1

Jadi untuk mencari binary dari integer 10, lihat pada table, 
yang kita perlukan adalah 8 + 2 untuk menjadi 10. 
Jadi pada tabel yang nilai 8 () dan nilai 2() menjadi angka 1 dan yang lain tetap nol menjadi 1010, 
dengan kata lain untuk membuat angka 10 dengan binary number diperlukan 4 bit dan untuk membuat angka 36 diperlukan 6 bit yaitu 101000.

27
26
25
24
23
22
21
20
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
Kita uji di python:

  • >>> bin(10),bin(36)
  • ('0b1010', '0b100100')
  • >>> 

Dengan bitwise kita menggeser bit-bit tersebut kekiri atau kekanan, contoh untuk binary(10) adalah 1010, bila kita geser kekiri 2 bit maka akan menjadi 101000, ada penambahan 2 bit dikanan angka, dan sekarang menjadi 2+ 23 = 32 + 8 = 40. Dalam pengoperasian bitwise, istilah 'geser kekiri' diatas adalah Shift left dimana lambang dari python adalah (<<) tanda lebih kecil dua kali.

  • >>> int(0b101000)
  • 40
  • >>> 10 << 2
  • 40
  • >>> 

Dan bila angka binary (10) kita geser kekanan maka hasilnya akan menjadi binary 10 atau integer 2. Dalam python, 'geser kekanan' adalah Shift right.

  • >>> 10>>2
  • 2
  • >>> 

Apa yang pada contoh diatas? untuk binary dari integer 10 adalah 1010 lalu digeser kekanan 2 bit, angka 10 yang sebelah kanan (warna merah)1010 akan terhapus, jadi binary-nya adalah 10, dan binary 10 adalah integer 2.

Sekarang kita menggunakan operator 'and' (&) dan 'or' (|) pada bilangan binary.


  • >>> 10 & 12
  • 8
  • >>> 10 | 12
  • 14

Binary 10 adalah 1010 dan 12 adalah 1100 sehingga untuk 10 &12 adalah :


10 = 1 0 1 0

12 = 1 1 0 0 &(and)
Hasil = 1 0 0 0 = 8

dan 10 | 12 :


10 = 1 0 1 0

12 = 1 1 0 0
| (or)
Hasil = 1 1 1 0 = 14

Dan untuk bitwise XOR :


10 = 1 0 1 0

12 = 1 1 0 0
XOR
Hasil = 0 1 1 0 = 6


  • >>> 10 ^ 12
  • 6
  • >>>


ada yang menarik dengan bin ini, yaitu dengan len():


  • >>> x=934377
  • >>> len(bin(x))
  • 22
  • >>> bin(x)
  • '0b11100100000111101001'
  • >>> 


Binary 934377 adalah '11100100000111101001' berjumlah 20 angka, dan bila kita menggunakan len(bin(x)) jumlahnya adalah 22, ini dikarenakan '0b' yang ada didepan juga dihitung. 

No comments:

Post a Comment