Jumlah Bit Bernilai 1
Pelajaran 11 dari 17 dalam kursus Manipulasi Bit di Coddy.
Pertama, apa itu bit set?
Dalam istilah komputer, digit '1' pada bilangan biner dikenal sebagai bit set.
Dalam pelajaran ini, kita ingin menghitung:
Jumlah bit set yang terdapat dalam bentuk biner dari bilangan yang diberikan.
Sebagai contoh, katakanlah kita memiliki bilangan (20)10 dalam biner (10100)2 , jumlah bit set yang terdapat dalam (20)10 adalah 2.
Coba pikirkan pendekatan yang bisa digunakan. Kamu mungkin berpikir untuk mengubah bilangan tersebut ke bentuk biner dan menghitung jumlah angka satu. Baik, tetapi bagaimana dengan bilangan besar? Kamu tidak akan bisa menyimpannya dalam tipe data integer. Bagaimana kita bisa mengetahui jumlah bit set dalam bilangan besar? Jawabannya tentu saja manipulasi bit!
- Pertama, kita menggunakan variabel posisi, misalnya pos, untuk mengetahui bit yang berada pada posisi tertentu dalam bilangan biner.
- Lalu, kita menggeser '1' ke kiri sebanyak pos kali.
- Kemudian, kita cukup melakukan operasi AND dengan bilangan yang diberikan.
Bagaimana cara ini berguna? Mari pahami dengan bilangan (20)10:
- Untuk posisi pertama, pos=0.
20 & 1<<pos, 1<<pos=1 dan operasi AND pada (10100)2 dan (00001)2 menghasilkan nol. - Untuk posisi kedua, pos=1.
20 & 1<<pos, 1<<pos=(10)2 dan operasi AND pada (10100)2 dan (00010)2 menghasilkan nol. - Untuk posisi ketiga, pos=2.
20 & 1<<pos, 1<<pos=(100)2 dan operasi AND pada (10100)2 dan (00100)2 menghasilkan satu, yaitu bit set pertama kita. - Untuk posisi keempat, pos=2.
20 & 1<<pos, 1<<pos=(1000)2 dan operasi AND pada (10100)2 dan (01000)2 menghasilkan nol. - Untuk posisi ketiga, pos=2.
20 & 1<<pos, 1<<pos=(10000)2 dan operasi AND pada (10100)2 dan (10000)2 menghasilkan satu, yaitu bit set kedua.
Untuk menghitung jumlah bit set, kita bisa menggunakan variabel penghitung. Namun, semoga contoh ini membuat algoritmanya jelas bagimu.
Dengan cara ini, kita bisa dengan mudah menghitung jumlah bit set yang terdapat dalam bentuk biner suatu bilangan tanpa khawatir melampaui rentang tipe data int di C++.
Tantangan
SedangLengkapi fungsi SetBits agar mengembalikan jumlah bit aktif dalam bilangan yang diberikan menggunakan pendekatan di atas.
Coba sendiri
#include <cmath>
int SetBits(int num) {
// Tulis kodemu di sini
}Semua pelajaran di Manipulasi Bit
2Algoritma Bit
Pangkat 2Angka yang Muncul Ganjil KaliJumlah Bit Bernilai 1Rotasi Bit pada Angka IRotasi Bit pada Angka IILatihan sendiri: Compiler C++ online
Periksa konversi: Konverter Basis Bilangan