Halo!
Kita mungkin sudah biasa dengan satuan bita (byte) dalam pemrograman. Tahukah kalian bahwa ada cara lain untuk mengatur data?
Setidaknya, ada tiga cara pandang utama dalam mengatur data dalam pemrograman, yaitu bit, word, dan bita. Kali ini, kita bahas satuan bit, ya.
Sejarah
Pada mulanya, komputer perlu diprogram bit demi bit. Pemrogram komputer akan mengatur tiap bit saat menyetel, memrogram, dan memasukkan data. Karena untaian bit sulit dibaca dan rentan keliru saat diatur, dibuatlah kartu tebuk (punch card) sebagai gantinya. Konsep kartu tebuk awalnya berasal dari mesin tenun otomatis. Mesin-mesin tenun ini dapat menyusun pola berdasarkan lubang pada kartu tebuk.

Pada masa kini pun, pengaturan data dalam satuan bit masih digunakan. Kriptografi mengolah data dalam satuan bit untuk menyandikan dan membuka sandi suatu data. Saat menggunakan perangkat keras, misalnya sensor atau aktuator, kita perlu menyalakan bit-bit tertentu untuk menerima data atau mengirim perintah.
Oleh karena itu, dalam banyak bahasa pemrograman, masih ada dukungan untuk manipulasi bit walau satuan utamanya tidak lagi dalam bit. Contohnya ada operasi OR, AND, dan XOR untuk mengatur bit-bit tertentu serta operasi NOT untuk membalik nilai bit. Ada juga operasi SHL (shift left), SHR (shift right), ROL (rotate left), dan ROR (rotate right) untuk melakukan geser atau geser melingkar. Aku pernah membahas contoh operasi geseran melingkar pada tulisanku sebelumnya tentang jaringan substitusi-permutasi.
Bit Mask (Tabir Bit)
Contoh kasusnya adalah penggunaan bit mask (tabir bit). Tiap setelan biner (ya-tidak atau nyala-mati) diwakili oleh satu bit. Untaian bit ini bisa berisi banyak setelan sekaligus.
Misalkan ada sebuah mobil mainan yang memiliki motor mandiri untuk tiap rodanya. Keadaan motor tiap roda kita kumpulkan dalam suatu untaian bit. Kita bisa mengatur motor tiap roda dengan operasi bit.
kendali = WXYZ X--Y (depan) | | | | W--Z (belakang)
Untuk menyalakan, kita bisa menggunakan operasi OR dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya.
0000 (semuanya mati) OR 1000 1000 (kiri belakang nyala, lainnya mati)
Untuk mematikan, kita bisa menggunakan operasi AND dengan 0 (awas, kebalikan dari operasi lain) pada bit yang dimaksud dan dengan 1 pada bit-bit lainnya.
1000 (kiri belakang nyala, lainnya mati)
AND 0111
0000 (semuanya mati)
Untuk membalikkan keadaan, kita bisa menggunakan operasi XOR dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya.
0000 (semuanya mati)
XOR 1000
1000 (kiri belakang nyala, lainnya mati)
XOR 1000
0000 (semuanya mati)
Untuk memeriksa keadaan, kita bisa menggunakan operasi AND dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya, lalu melihat hasilnya (bernilai nol atau tidak).
1111 (semua nyala)
AND 1000 (periksa kiri belakang)
1000 (lebih dari nol: kiri belakang nyala)
Agar mudah digunakan dan dibaca, biasanya tiap bit disimpan ke dalam variabel.
KIRI_BELAKANG = 1000 KIRI_DEPAN = 0100 KANAN_DEPAN = 0010 KANAN_BELAKANG = 0001
Kita juga bisa menggabungkan beberapa roda sekaligus untuk mengaturnya dalam sekali jalan.
KIRI = KIRI_BELAKANG OR KIRI_DEPAN KANAN = KANAN_BELAKANG OR KANAN_DEPAN BELAKANG = KIRI_BELAKANG OR KANAN_BELAKANG DEPAN = KIRI_DEPAN OR KANAN_DEPAN SEMUA = KIRI OR KANAN SEMUA = BELAKANG OR DEPAN
Berikut contoh penggunaannya:
kendali AND NOT SEMUA (0000, semuanya mati) kendali OR KIRI_BELAKANG (1000, kiri belakang nyala, lainnya mati) kendali AND NOT KIRI_BELAKANG (0000, kiri belakang mati juga) kendali OR DEPAN (0110, depan nyala, belakang mati) kendali XOR KIRI_DEPAN (0010, kanan depan nyala, lainnya mati) kendali AND KANAN_DEPAN > 0 = BENAR (kanan depan nyala)
Penutup
Sepertinya cukup sampai di sini bahasa tentang satuan bit dalam pemrograman. Untuk selanjutnya, masih ada satuan word dan satuan bita yang bisa kita bahas bersama. Semoga membantu dan sampai jumpa!