여기에서는 정수의 설정 비트 수를 확인하는 방법을 살펴보겠습니다. 세트 비트는 숫자의 이진 표현에서 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++로 컴파일하려는 경우 컴파일 시간 동안 오류를 반환합니다. 너무 많은 인수가 전달되었다고 표시됩니다.