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