Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में सबसे दाहिने सेट बिट की स्थिति


इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम संख्या के सबसे दाहिने सेट बिट के इंडेक्स को प्रिंट करना है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट -4

आउटपुट -3

स्पष्टीकरण − 4 का बाइनरी 100 है, सबसे दाहिने सेट बिट का सूचकांक 3 है।

इस समस्या को हल करने के लिए, एक सरल समाधान यह होगा कि संख्या को तब तक स्थानांतरित किया जाए जब तक कि एक सेट बिट का सामना न हो जाए, लेकिन संख्या बड़ी होने पर इसमें बहुत अधिक गणना हो सकती है।

एक अधिक कुशल समाधान बूलियन बीजगणित का उपयोग करेगा। इसके लिए हम पहले संख्या के 2 के पूरक की गणना करेंगे, यह संख्या के सभी बिट्स को पहले सेट बिट को छोड़कर फ्लिप करेगा। फिर हम बिट-वार और संख्या की गणना करेंगे और यह 2 का पूरक है। इसके परिणामस्वरूप केवल एक सेट बिट और वह स्थिति होगी जो हम चाहते हैं। समाधान +1 नंबर के log2 द्वारा दिया जाएगा।

यह समझने में थोड़ा जटिल लगता है, आइए इस पद्धति का उपयोग करके एक उदाहरण को हल करें।

N= 10 , binary = 1010
2’s complement, 0101
1010 & 0101 = 0010
log2(2) = 1
1+1 = 2 which is the given index.

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

#include <iostream>
#include <math.h>
using namespace std;
void rightSetBit(int N) {
   int bitIndex = log2(N & -N)+1;
   cout<<bitIndex;
}
int main() {
   int N = 10;
   cout<<"The rightmost Set bit of the number "<<N<<" is : ";
   rightSetBit(N);
   return 0;
}

आउटपुट

The rightmost Set bit of the number 10 is : 2

  1. किसी संख्या के प्रत्येक सेट बिट के लिए C++ में दूसरे के टॉगल बिट्स

    इस समस्या में, हमें दो पूर्णांक मान दिए गए हैं। हमारा काम ऑपरेशन करने के लिए एक सी प्रोग्राम बनाना है, संख्या के प्रत्येक सेट बिट के लिए दूसरे के टॉगल बिट्स। समस्या को समझने के लिए एक उदाहरण लेते हैं Input: 3 7 Output: 4 Binary of 3: 011 Binary of 3: 111 दूसरे नंबर के पहले और दूसरे बिट को फ़्लि

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की