यहां हम देखेंगे कि क्या किसी संख्या के बाइनरी प्रतिनिधित्व में आसन्न सेट बिट्स हैं। मान लीजिए संख्या 12 में दो क्रमागत 1 हैं (12 = 1100)।
इस प्रकार की संख्या की जांच करने के लिए, विचार बहुत सरल है। हम संख्या को 1 बिट शिफ्ट करेंगे, फिर बिटवाइज AND करेंगे। यदि बिटवाइज AND परिणाम शून्येतर है, तो वहां कुछ क्रमागत 1 होने चाहिए।
उदाहरण
#include <iostream>
using namespace std;
bool hasConsecutiveOnes(int n) {
if((n & (n >> 1)) != 0) {
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