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

C++에서 주어진 숫자의 이진 표현에서 선행 0의 수

<시간/>

숫자가 주어지면 이진 표현에서 선행 0의 수를 찾아야 합니다. 총 비트가 32라고 가정합니다. 예를 살펴보겠습니다.

입력

5

출력

25

5의 이진 표현은 00000...00101입니다. 선행 0의 수는 29개입니다.

알고리즘

  • 숫자 n을 초기화합니다.
  • n의 이진 표현 찾기
  • 총 비트 수(즉, 32)에서 n의 이진 표현 길이를 뺍니다.
  • 결과를 반환합니다.

구현

다음은 위의 알고리즘을 C++로 구현한 것입니다.

#include <bits/stdc++.h>
using namespace std;
int getLeadingZeroesCount(unsigned int n) {
   int totalBits = sizeof(n) * 8;
   string binary = "";
   while (n) {
      int remainder = n % 2;
      if (remainder || binary.length() > 0) {
         binary += remainder;
      }
      n /= 2;
   }
   return totalBits - binary.length();
}
int main() {
   int n = 101;
   cout << getLeadingZeroesCount(n) << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

25