Masker Bit menyediakan cara yang efisien untuk memanipulasi sebuah himpunan Boolean kecil yang disimpan sebagai bilangan bulat bertanda 32 (atau 64) bit dalam basis-10 tetapi diterjemahkan sebagai sebuah string pendek dengan 32 (atau 64) karakter.
Visualisasi dari struktur data masker bit dan operasi-operasinya diperlihatkan diatas.
Baris paling atas medeskripsikan indeks-indeks dari bit-bit dari bilangan bulat masukan S dimulai dari bit ke-0 sebagai bit paling kanan. Catat bahwa kami menggunakan notasi heksadesimal 1 digit A/B/../E untuk bit ke 10/11/../14.
Baris terakhir mendeskripsikan hasilnya.
Dalam visualisasi ini, kami saat ini mendukung 6 operasi masker bit (semua berjalan dalam O(1)):
Kita bisa memasukkan sebuah bilangan bulat (kecil) diantara [0..32767 (215-1)] dalam Desimal (basis-10) dan bentuk Biner (basis-2) dari S akan divisualisasikan.
Alternatifnya, kita bisa memilh bilangan bulat acak diantara jangkauan yang sama [0..32767], sebuah pangkat 2 acak (dengan pola spesifik '10...0'), atau sebuah pangkat 2 acak dikurangi satu (dengan pola spesifik '11...1').
Kita bisa memasukkan indeks dari Bit ke-j dari S untuk diset (dinyalakan).
Catat bahwa indek dimulai dari 0 tetapi dihitung dari bit yang paling kanan (lihat baris paling atas).
Operasi manipulasi bitnya sederhana: S OR (1 << j).
Menyalakan bit yang sudah menyala tidak akan mengubah apapun.
Kita bisa memasukkan indeks dari Bit ke-j dari S untuk dicek (apakah nyala atau mati).
Catat bahwa indek dimulai dari 0 tetapi dihitung dari bit yang paling kanan (lihat baris paling atas).
Operasi manipulasi bitnya sederhana: S AND (1 << j).
Kita bisa memasukkan indeks dari Bit ke-j dari S untuk dihapus (dimatikan).
Catat bahwa indek dimulai dari 0 tetapi dihitung dari bit yang paling kanan (lihat baris paling atas).
Operasi manipulasi bitnya sederhana: S AND ~(1 << j).
Menghapus bit yang sudah mati tidak akan mengubah apapun.
Kita bisa memasukkan indeks dari Bit ke-j dari S untuk diubah (nyala → mati atau mati → nyala).
Catat bahwa indek dimulai dari 0 tetapi dihitung dari bit yang paling kanan (lihat baris paling atas).
Operasi manipulasi bitnya sederhana: S XOR (1 << j).
Operasi ini tidak membutuhkan masukan. Ini adalah operasi spesial untuk dengan cepat mengidentifikasikan bit terkanan yang menyala dalam S.
Operasi manipulasi bitnya sederhana: S AND (-S).
Catat bahwa didalam Two's complement, -S = NOT(S)+1.
Untuk contoh source code mengenai masker bit/manipulasi bit, silahkan menganalisa: bit_manipulation.cpp | py | java | ml.
Untuk menguji pemahaman anda mengenai manipulasi bit, cobalah Kuis Online topik masker bit kami.
Dan untuk untuk masalah-masalah yang lebih menantang mengenai masker bit/manipulasi bit, cobalah masalah-masalah online judge: Uva 11933 - Splitting Numbers dan Kattis - bitbybit.
Diluar aplikasi-aplikasi mudah ini, manipulasi bit biasanya digunakan sebagai optimisasi level-rendah di berbagai algoritma-algoritma tingkat lanjut, jadi bersiaplah jika anda menjumpai manipulasi bit sebagai sub-komponen dari algoritma-algoritma yang lebih besar.