32비트의 부호 없는 이진수가 주어지면 작업은 설정된 비트, 즉 '1'이 포함된 수를 계산하는 것입니다.
예
입력:
N = 00000000000000100111
출력:
4
설명: 주어진 unsigned 숫자에 존재하는 총 세트 비트는 4이므로 출력을 '4'로 반환합니다.
이 문제를 해결하기 위한 접근 방식
우리는 부호 없는 32비트 이진수를 제공했습니다. 작업은 그 안에 얼마나 많은 '1이 있는지 세는 것입니다.
주어진 이진수에 존재하는 '1'의 수를 계산하려면 이진수를 입력 매개변수로 사용하는 내장 STL 함수 '__builin_popcount(n)'을 사용할 수 있습니다.
- 2진수 N을 입력으로 사용합니다.
- count1Bit(uint32_t n) 함수는 32비트 이진수를 입력으로 사용하고 이진수에 있는 '1'의 개수를 반환합니다.
- 내장 함수 __builtin_popcount(n)은 'n'을 매개변수로 입력받아 개수를 반환합니다.
예시
#include<bits/stdc++.h> using namespace std; int count1bits(uint32_t n) { return bitset < 32 > (n).count(); } int main() { uint32_t N = 0000000010100000011; cout << count1bits(N) << endl; return 0; }
위의 코드를 실행하면 출력이 다음과 같이 생성됩니다.
출력
4
주어진 숫자에는 4개의 세트 비트 또는 '1'이 있습니다. 따라서 출력은 '4'입니다.