Banyak programmer termasuk saya yang saat belajar bahasa pemrograman, pasti pernah bertemu istilah “bitwise”.
Apa sih itu bitwise? Kok istilahnya kayak serem banget?
Sebagai orang yang pernah belajar bahasa assembly (NMOS 6502) saya sudah tidak terlalu asing lagi dengan bitwise.
Apa bitwise saat ini masih terpakai? Masih, masih banget.
Tapi untuk apa atau bagaimana penerapannya di dunia pemrograman modern?
Bitwise, ada kata “wise” yang berarti bijak di sini. Sekarang bayangin orang bijak yang biasanya udah berusia puluhan tahun, terlihat tua dan berwibawa.
Bitwise, ini adalah benar-benar penggunaan bit yang mana kita benar-benar langsung mengoperasikan binari bahasa komputer tertua yang masih 0 dan 1.
Serem banget kedengerannya? Kenapa nggak pake sintaks modern aja?
Nah, justru menariknya di sini. Kalau kita paham bitwise, justru kita bisa dapat banyak manfaat.
Salah satu manfaat memakai bitwise adalah bukan hanya bikin koding jadi pendek dan efisien, tapi juga CPU benar-benar teroptimasi karena tidak perlu compile yang ribet-ribet sebab langsung menjurus ke saklar 0 dan 1 mereka. CPU gak perlu repot-repot cek banyak IF atau semacamnya serta compile lagi dan lagi yang bisa hemat resource.
Tapi gak serem kok, serius. Gak serem banget. Gampang malah. Percaya deh sama saya.
Saya aja sampe jatuh cinta sama bitwise. Asik banget soalnya. Bener-bener gampang, serius!
Secara umum operasi bitwise itu ada 3. AND, OR, dan XOR.
Ini mirip tabel logika matematika yang pernah kita pelajari waktu SMA. Cuma, istilah “Salah (S)” diganti dengan 0, dan “Benar (B)” diganti dengan 1.
Tabel AND (&) :
Logika 1 | Logika 2 | Logika 1 & 2 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Tabel OR (|) :
Logika 1 | Logika 2 | Logika 1 | 2 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Tabel XOR (^) :
Logika 1 | Logika 2 | Logika 1 ^ 2 |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Iya, kalau itu sih kita paham, cuma ya penerapannya gimana?
Sebelum itu, kalau kalian pakai Windows, di app Kalkulatornya bisa pencet ALT + 4 untuk beralih ke menu programmer.
Ini untuk interaktifnya.
Nah ini yang kita tunggu-tunggu. Penerapan bitwise itu kayak gimana sih? Dan kenapa juga bisa bikin ngoding jadi efisien dan hemat waktu?
Yang paling sering saya pakai untuk bitwise ini adalah flagging. Salah satu contoh flagging yang umum adalah pemberian hak akses.
Flagging itu bisa dibilang ngasih tanda (kalo di game Minesweeper itu pakai ikon bendera), makanya kita sebut dengan flag-ing. Bahasa gampangnya itu ngasih tanda, mencirikan.
Kita pun sering flagging orang lain di dunia nyata. Misalnya, si A itu orangnya tipikal begini, begini, dan begini. Si B itu begitu, begitu, dan begitu. Jadi kita bisa paham bagaimana cara menghadapi si A dan si B, terkhusus orang yang kita kasih red-flag.
Memang begitulah cara kerja flagging.
Sekarang kembali ke flagging pakai bitwise, yang tadi saya kasih contoh ke penerapan hak akses.
Misal, kalau dia sebagai admin, dia bisa lihat, input, edit, dan hapus.
Kalau dia sebagai guru, dia hanya bisa input, dan edit.
Kalau sebagai murid, hanya bisa lihat.
Nah, kalau kita ngodingnya pakai IF, pasti bakal capek secapek-capeknya. Apalagi kalau simpan seluruh valuenya di database.
Pernah dulu alternatifnya saya pakai modulo atau sisa hasil bagi, tapi ternyata perkalian bilangan prima itu bikin memori 32 bit gak sanggup untuk perkalian prima sampai angka prima 31.
Sekarang dari contoh di atas, bagaimana penerapan menggunakan bitwise? Perhatikan contoh interaktif berikut.
Salah satu contoh kasus bitwise lainnya adalah menerapkan hari libur bagi pegawai.
Misal:
Bagaimana cara membuatnya jika memakai bitwise?