세트 비트 수를 세는 것은 주어진 정수에 대해 1을 세는 것을 의미합니다. 이를 위해 적용할 수 있는 몇 가지 솔루션이 있습니다. 이 경우에는 문자열에서 1의 개수를 세어야 하는 이진수(정수의 이진 표현)가 있습니다.
1의 수를 세기 위해 문자열을 가져와서 각 요소를 반복하고 문자열에 있는 모든 1의 수를 셉니다. 예를 들어 17을 입력하면 17의 이진 표현은 2개의 1을 포함하는 10001이므로 출력은 2가 됩니다.
Input: Enter a positive integer: 6 Output: 2
6의 이진 표현은 110이며, 이는 2개의 세트 비트를 갖습니다.
이 반복 방법에는 각 비트에 대해 한 번의 반복이 필요합니다. 그것은 숫자의 모든 자리를 통과합니다. 더 이상 비트가 설정되지 않으면 반복이 종료됩니다. 최악의 경우에는 최상위 비트만 설정된 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); }
위 내용은 C/C++ 프로그램: 정수에 설정된 자릿수를 계산하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!