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

C++ में संख्या के बिट्स को उलटने का कुशल प्रोग्राम


इस समस्या में, हमें एक अनसाइन्ड पूर्णांक n दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो उस संख्या को लौटाता है जो संख्या के सभी बिट्स को उलटने से उत्पन्न होती है।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

n = 1

आउटपुट

2147483648

व्याख्या

1 का बाइनरी 000...0001 है, उलटा 100...0000 है।

इस समस्या को हल करने के लिए, एक सरल समाधान एक साधारण सूत्र का उपयोग करना होगा। हम संख्या के बाइनरी के माध्यम से लूप करेंगे। और संख्या में सेट बिट की स्थिति ढूंढेंगे मान लीजिए वह i है। परिणाम की गणना सूत्र का उपयोग करके की जाएगी, ((कुल_बिट्स_की_संख्या) - 1) - i

इस एल्गोरिदम के कार्यान्वयन को दिखाने वाला प्रोग्राम,

उदाहरण

#include <iostream>
using namespace std;

unsigned int reverseBitNumber(unsigned int num) {
    unsigned int totalNumberOfBits = sizeof(num) * 8;
    unsigned int reverseNumber = 0, temp;
    for (int i = 0; i < totalNumberOfBits; i++) {
        if ((num & (1 << i)))
            reverseNumber |= (1 << ((totalNumberOfBits - 1) - i));
    }
    return reverseNumber;
}

int main() {
    unsigned int n = 21;
    cout << "The number is " << n << endl;
    cout << "The number which has reverse bits of the number is: " << reverseBitNumber(n);
    return 0;
}

आउटपुट

The number is 21
The number which has reverse bits of the number is: 2818572288

विधि 2

एक और विधि शिफ्टिंग का उपयोग कर रही है, हम संख्या के बिट्स को तब तक शिफ्ट करेंगे जब तक यह शून्य न हो जाए और फिर उन्हें रिवर्स नंबर में शिफ्ट करेंगे और फिर शेष संख्या में बिट्स को शिफ्ट करके परिणाम प्राप्त करेंगे।

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

उदाहरण

#include <iostream>
using namespace std;

unsigned int reverseBitNumber(unsigned int n) {
    unsigned int rem_shift = sizeof(n) * 8 - 1;
    unsigned int reverseNubmer = n;
    n >>= 1;
    while (n) {
        reverseNubmer <<= 1;
        reverseNubmer |= n & 1;
        n >>= 1;
        rem_shift--;
    }
    reverseNubmer <<= rem_shift;
    return reverseNubmer;
}

int main() {
    unsigned int n = 21;
    cout << "The number is " << n << endl;
    cout << "The number which has reverse bits of the number is: " << reverseBitNumber(n);
    return 0;
}

आउटपुट

The number is 21
The number which has reverse bits of the number is: 2818572288
  1. C प्रोग्राम: सरणी को उलटें (Reverse Array) C प्रोग्राम: सरणी को उलटें (Reverse Array)

    संबंधित आइटम्स का समूह जो एक सामान्य नाम से संग्रहीत होता है, सरणी कहलाता है। सिंटैक्स datatype array_name[size]; आरंभीकरण घोषणा के समय आरंभीकरण: int a[5] = {10, 20, 30, 40, 50}; C में सरणी उलटना हम स्वैपिंग तकनीक का उपयोग करके सरणी को उलट सकते हैं। उदाहरण: यदि P चार एलिमेंट्स की पूर्णांक सरणी ह

  1. - धनात्मक पूर्णांक के बिट्स को उल्टा करने के लिए पायथन प्रोग्राम

    समस्या विवरण सबसे पहले bin() फंक्शन का उपयोग करके संख्या को बाइनरी में बदलें। फिर बाइनरी प्रतिनिधित्व के पहले दो वर्ण छोड़ें क्योंकि bin() बाइनरी प्रतिनिधित्व में 0b प्रीफिक्स जोड़ता है और शेष भाग को उल्टा करें। फिर वर्ण से उल्टा करें जब तक बाएं से दूसरा अंतिम वर्ण न हो। उल्टे बाइनरी स्ट्रिंग को पूर

  1. - संख्या में कुल बिट्स गिनने के लिए पायथन प्रोग्राम

    समस्या विवरण सबसे पहले हम एक संख्या इनपुट करते हैं फिर bin() फंक्शन का उपयोग करके इस संख्या को बाइनरी में बदलते हैं और अगला आउटपुट स्ट्रिंग के पहले दो वर्ण 0b को हटाते हैं, फिर बाइनरी स्ट्रिंग की लंबाई की गणना करते हैं। उदाहरण इनपुट: 200 आउटपुट: 8 व्याख्या 200 का बाइनरी प्रतिनिधित्व 11001000 है