किसी संख्या को देखते हुए, हमें उसके द्विआधारी निरूपण में अग्रणी शून्यों की संख्या ज्ञात करनी होती है। मान लें कि कुल बिट्स 32 हैं। आइए एक उदाहरण देखें।
इनपुट
5
आउटपुट
25
5 का द्विआधारी प्रतिनिधित्व 00000...00101 है। अग्रणी शून्यों की संख्या 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