Ở đây chúng ta sẽ thấy cách chúng ta có thể kiểm tra số lượng bit đã đặt trong một số nguyên. Các bit đặt là 1 trong biểu diễn nhị phân của một số. Ví dụ, số 13 có ba bit đặt 1101. Vì vậy, số đếm sẽ là 3.
Để giải quyết vấn đề này, chúng ta sẽ chuyển số sang bên phải, và nếu LSb là 1, thì hãy tăng số lượng. Cho đến khi con số trở thành 0, nó sẽ chạy.
Thuật toán
countSetBit ()
begin count := 0 while count is not 0, do if LSb of n is set, then count := count + 1 end if n := n after shifting 1 bit to right done return count end
Ví dụ
#include<iostream> using namespace std; int count_set_bit(int n) { int count = 0; while(n != 0) { if(n & 1 == 1) { count++; } n = n >> 1; //right shift 1 bit } return count; } int main() { int n; cout << "Enter a number: "; cin >> n; cout << "Number of set bits: " << count_set_bit(n); }
Đầu ra
Enter a number: 29 Number of set bits: 4
Chương trình này sẽ chạy trong C và tạo ra kết quả đầu ra, nhưng khi chúng ta muốn biên dịch bằng C ++, nó sẽ trả về một lỗi trong thời gian biên dịch. Nó sẽ cho biết có quá nhiều đối số được thông qua.