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

C/C++ 프로그램을 정수로 설정한 비트 수를 계산하시겠습니까?

<시간/>

세트 비트를 카운팅한다는 것은 주어진 정수의 1'S를 카운팅하는 것을 의미합니다. 이를 위해 적용할 수 있는 여러 솔루션이 있습니다. 이 경우 문자열에서 1의 수를 계산해야 하는 이진수(정수의 이진 표현)가 있습니다.

1의 수를 계산하기 위해 문자열을 가져와 각 요소를 순회하고 문자열의 모든 1을 계산합니다. 예를 들어, 17을 입력하면 출력은 2가 됩니다. 왜냐하면 17의 바이너리는 2개의 1을 포함하는 10001이기 때문입니다.

Input: Enter a positive integer: 6
Output: 2

설명

6의 이진 표현은 2개의 세트 비트가 있는 110입니다.

이 반복적인 접근 방식은 비트당 한 번의 반복이 필요합니다. 숫자의 모든 비트를 통해 실행됩니다. 더 이상 비트가 설정되지 않으면 반복이 종료됩니다. 최악의 경우 최상위 비트만 설정된 32비트 워드에서 32회 반복됩니다. 이 솔루션은 1이 희소하고 최하위 비트에 속하는 경우 가장 간단하고 유용합니다.

예시

#include <stdio.h>
int main(void) {
   unsigned int n = 34;
   for (c = 0; n; n >>= 1) {
      c += n & 1;
   }
   printf("%d\n", c);
}