यहां हम देखेंगे, अगर किसी संख्या के बाइनरी प्रतिनिधित्व में आसन्न सेट बिट्स हैं। मान लीजिए कि संख्या 12 में लगातार दो 1s (12 =1100) हैं।
इस प्रकार की संख्या की जाँच करने के लिए, विचार बहुत सरल है। हम नंबर 1 बिट शिफ्ट करेंगे, फिर बिटवाइज AND करेंगे। यदि बिटवाइज़ और परिणाम गैर-शून्य है, तो कुछ क्रमागत 1s होने चाहिए।
उदाहरण
#include <iostream>
using namespace std;
bool hasConsecutiveOnes(int n) {
if((n & (n >> 1)) == 1){
return true;
}else{
return false;
}
}
int main() {
int num = 67; //1000011
if(hasConsecutiveOnes(num)){
cout << "Has Consecutive 1s";
}else{
cout << "Has No Consecutive 1s";
}
} आउटपुट
Has Consecutive 1s