Computer >> Máy Tính >  >> Lập trình >> lập trình C

C / C ++ Chương trình đếm số bit thiết lập trong một số nguyên?

Ở đâ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.