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.
Remarks: By default, we show e-Lecture Mode for first time (or non logged-in) visitor.
If you are an NUS student and a repeat visitor, please login.
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.
Pro-tip 1: Since you are not logged-in, you may be a first time visitor (or not an NUS student) who are not aware of the following keyboard shortcuts to navigate this e-Lecture mode: [PageDown]/[PageUp] to go to the next/previous slide, respectively, (and if the drop-down box is highlighted, you can also use [→ or ↓/← or ↑] to do the same),and [Esc] to toggle between this e-Lecture mode and exploration mode.
Dalam visualisasi ini, kami saat ini mendukung 6 operasi masker bit (semua berjalan dalam O(1)):
- Set S (beberapa cara)
- Set Bit ke-j
- Cek Bit ke-j
- Ubah Bit ke-j
- Clear Bit ke-j
- Bit Aktif Paling Kanan
Pro-tip 2: We designed this visualization and this e-Lecture mode to look good on 1366x768 resolution or larger (typical modern laptop resolution in 2021). We recommend using Google Chrome to access VisuAlgo. Go to full screen mode (F11) to enjoy this setup. However, you can use zoom-in (Ctrl +) or zoom-out (Ctrl -) to calibrate this.
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').
Pro-tip 3: Other than using the typical media UI at the bottom of the page, you can also control the animation playback using keyboard shortcuts (in Exploration Mode): Spacebar to play/pause/replay the animation, ←/→ to step the animation backwards/forwards, respectively, and -/+ to decrease/increase the animation speed, respectively.
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.
You have reached the last slide. Return to 'Exploration Mode' to start exploring!
Note that if you notice any bug in this visualization or if you want to request for a new visualization feature, do not hesitate to drop an email to the project leader: Dr Steven Halim via his email address: stevenhalim at gmail dot com.
Increment
Pasang S
Pasang Bit ke-j
Periksa Bit ke-j
Hapus Bit ke-j
Ubah Bit ke-j
Bit Paling Kecil