숫자가 주어지면 이진 표현에서 선행 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