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

C++ में बिटवाइज़ और नंबर रेंज की रेंज


मान लीजिए कि हमारे पास एक रेंज [m, n] है जहां 0 <=m <=n <=2147483647. हमें बिटवाइज और इस रेंज की सभी संख्याओं को शामिल करना है। तो अगर रेंज [5, 7] है, तो परिणाम 4 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • मैं :=0

  • जबकि m, n नहीं है, तब

    • एम:=एम/2, एन:=एन/2, मैं 1 से बढ़ाएँ

  • मैं बार-बार बाईं ओर शिफ्ट होने के बाद मी लौटाता हूं।

उदाहरण(C++)

एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int rangeBitwiseAnd(int m, int n) {
      int i = 0;
      while(m != n){
         m >>= 1;
         n >>= 1;
         i++;
      }
      return m << i;
   }
};
main(){
   Solution ob;
   cout << (ob.rangeBitwiseAnd(5,7));
}

इनपुट

5
7

आउटपुट

4

  1. C++ में दी गई सीमा से अधिकतम बिटवाइज़ और जोड़ी

    समस्या कथन एक श्रेणी [एल, आर] को देखते हुए, कार्य एक जोड़ी (एक्स, वाई) को ढूंढना है जैसे कि एल ≤ एक्स <वाई ≤ आर और एक्स और वाई सभी संभावित जोड़े में से अधिकतम है, फिर बिटवाइज और मिली जोड़ी को प्रिंट करें । उदाहरण यदि L =1 और R =10 है तो बिटवाइज अधिकतम और मान 8 है जिसे निम्न प्रकार से बनाया जा सकता

  1. बिटवाइज़ और C++ में क्या है?

    बिटवाइज AND ऑपरेटर (&) पहले ऑपरेंड के प्रत्येक बिट की तुलना दूसरे ऑपरेंड के संगत बिट से करता है। यदि दोनों बिट्स 1 हैं, तो संबंधित परिणाम बिट को 1 पर सेट किया जाता है। अन्यथा, संबंधित परिणाम बिट 0 पर सेट होता है। बिटवाइज़ समावेशी और ऑपरेटर के दोनों ऑपरेंड अभिन्न प्रकार के होने चाहिए। उदाहरण के लिए,

  1. पायथन में दी गई श्रेणी में बिटवाइज़ और संख्याओं की श्रेणी खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो मान प्रारंभ और अंत हैं, हमें बिटवाइज़ और श्रेणी में सभी संख्याओं का पता लगाना है [प्रारंभ, अंत] (दोनों समावेशी)। तो, अगर इनपुट स्टार्ट =8 एंड =12 जैसा है, तो आउटपुट 8 होगा 1000 बाइनरी में और 12 बाइनरी में 1100 है, इसलिए 1000 और 1001 और 1010 और 1011 और 1100 1000 है जो 8 है।