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

C++에서 큰 이진수의 1비트 수 찾기

<시간/>

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'입니다.