Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++ 프로그램이 정수로 설정된 비트를 계산합니까?

<시간/>

여기에서는 정수의 설정 비트 수를 확인하는 방법을 살펴보겠습니다. 세트 비트는 숫자의 이진 표현에서 1입니다. 예를 들어 숫자 13에는 3개의 세트 비트 1101이 있습니다. 따라서 카운트는 3이 됩니다.

이 문제를 해결하기 위해 숫자를 오른쪽으로 이동하고 LSb가 1이면 개수를 늘립니다. 숫자가 0이 될 때까지 실행됩니다.

알고리즘

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

예시

#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);
}

출력

Enter a number: 29
Number of set bits: 4

이 프로그램은 C에서 실행되고 출력을 생성하지만 C++로 컴파일하려는 경우 컴파일 시간 동안 오류를 반환합니다. 너무 많은 인수가 전달되었다고 표시됩니다.