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

C++ में रेंज का बिटवाइज AND


इस समस्या में, हमें दो पूर्णांक मान a और b दिए गए हैं। और हमारा कार्य a से b तक की रेंज का बिटवाइज AND (&) ढूंढना है। इसका मतलब है हमें a & a+1 & a+2 & ... b-1 & b का मान ढूंढना होगा।

उदाहरण

इनपुट - a = 3 , b = 8

आउटपुट - 0

व्याख्या - 3 & 4 & 5 & 6 & 7 & 8 = 0

समस्या को हल करने के लिए, एक सरल समाधान a से शुरू करके b तक एक बढ़ाकर सभी संख्याओं का बिटवाइज AND ढूंढना है।

अधिक प्रभावी समाधान,

यह एक अधिक प्रभावी समाधान है, जिसे निम्न का उपयोग करके किया जा सकता है -

चरण 1 - b के LSB को फ्लिप करें।

चरण 2 - संख्या की तुलना a और b से करें, जांचें कि क्या यह रेंज में है,

चरण 2.1 - यदि संख्या a से बड़ी है तो उसका LSB फिर से फ्लिप करें।

चरण 2.2 - यदि यह a से बड़ा नहीं है तो संख्या = परिणाम।

अब, आइए उपरोक्त एल्गोरिदम को कार्य करते हुए देखें -

उदाहरण - a = 3 और b = 8।

समाधान -

चरण 1 - b = 8 (1000), LSB फ्लिप करना जो संख्या में एकमात्र है। संख्या 0000 यानी 0 हो जाती है।

चरण 2 - 0, 3 से कम है, 0 परिणाम है।

कार्यक्रम उदाहरण

#include <stdio.h>
int main(){
    long a, b;
    a = 3; b = 8;
    do{
        b -= (b & -b);
    }while(a < b);
    printf("%li", b);
}

आउटपुट

0
  1. - C++ में न्यूनतम धनात्मक पूर्णांक जो C से विभाज्य हो और रेंज [A, B] में न हो

    मान लीजिए हमारे पास तीन पूर्णांक A, B, और C हैं। हमें एक न्यूनतम पूर्णांक X ढूंढना है, जैसे कि X mod C = 0, और X रेंज [A, B] में नहीं है। यदि A, B और C के मान 5, 10 और 4 हैं, तो X का मान 4 होगा। समाधान प्राप्त करने के चरण देखते हैं: चरण − यदि C रेंज [A, B] में नहीं है, तो C को परिणाम के रूप म

  1. - C++ में रेंज [A, B] में C से विभाज्य अधिकतम धनात्मक पूर्णांक

    यहां हम एक दिलचस्प समस्या देखेंगे। मान लीजिए हमारे पास तीन पूर्णांक A, B, और C हैं। हमें एक न्यूनतम पूर्णांक X ढूंढना है, जैसे कि X mod C = 0, और X रेंज [A, B] में नहीं है। यदि A, B और C के मान 5, 10 और 4 हैं, तो X का मान 4 होगा। समाधान प्राप्त करने के चरण: चरण − यदि C रेंज [A, B] में नहीं है

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

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