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

C++에서 Bitset을 사용하여 숫자의 이진 표현에서 후행 0의 수 계산


입력으로 정수 숫자가 제공됩니다. 목표는 bitset을 사용하여 num의 이진 표현에서 후행 0의 수를 찾는 것입니다.

bitset은 비트 0과 1을 저장합니다. 비트 배열입니다.

예를 들어

입력

num = 10

출력

Count of number of trailing zeros in Binary representation of a number using
Bitset are: 1

설명

The number 10 in binary is represented as 1010 so trailing zeroes in it is
1.

입력

num = 64

출력

Count of number of trailing zeros in Binary representation of a number using Bitset are: 6

설명

The number 64 in binary is represented as 10000000 so trailing zeroes in it is 6.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -

이 접근 방식에서는 bitset을 사용합니다. |를 사용하여 num으로 bitset을 설정합니다. 이제 for 루프를 사용하여 비트 집합을 트래버스합니다. 첫 번째 1이 발생하는 즉시 루프를 중단하고, 그렇지 않으면 후행 0에 대한 카운트를 증가시킵니다.

  • 정수를 입력으로 받습니다.

  • 함수 trailing_zeroes(int num)는 num을 취하고 Bitset을 사용하여 숫자의 이진 표현에서 후행 0의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 비트셋을 가져오세요.

  • num을 arr |=num으로 설정합니다.

  • i=0에서 i<64까지 for 루프를 사용하여 arr을 트래버스합니다. arr[i]가 0이면 증분 카운트가 루프를 중단합니다.

  • 루프의 끝에서 결과로 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int trailing_zeroes(int num){
   int count = 0;
   bitset<64> arr;
   arr |= num;
   for (int i = 0; i < 64; i++){
      if (arr[i] == 0){
         count++;
      } else {
         break;
      }
   }
   return count;
}
int main(){
   int num = 6;
   cout<<"Count of number of trailing zeros in Binary representation of a number using Bitset are: "<<trailing_zeroes(num);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of number of trailing zeros in Binary representation of a number using
Bitset are: 1