C में XOR ऑपरेटर का उपयोग कैसे करें: बिटवाइज़ ऑपरेशन्स, उदाहरण, और व्यावहारिक अनुप्रयोग

1. परिचय

C में बिटवाइज ऑपरेशंस का अवलोकन

सी भाषा मेमोरी और प्रोसेसर्स को कुशलतापूर्वक संभालने के लिए बिटवाइज ऑपरेशंस प्रदान करती है। इनमें से “XOR (एक्सक्लूसिव OR)” ऑपरेशन विशेष रूप से महत्वपूर्ण है। बिटवाइज ऑपरेशंस का उपयोग डेटा एन्क्रिप्शन, डेटा वैलिडेशन, और संख्यात्मक हेरफेर जैसे परिदृश्यों में सामान्य रूप से किया जाता है। XOR दो तुलना किए गए बिट्स अलग होने पर “1” लौटाता है, और समान होने पर “0”, जो इसे एक सरल लेकिन शक्तिशाली ऑपरेशन बनाता है।

यह लेख सी में XOR ऑपरेशंस के बेसिक्स से लेकर व्यावहारिक अनुप्रयोगों तक सब कुछ समझाता है, जिसमें वास्तविक कोड उदाहरण शामिल हैं, ताकि शुरुआती भी आसानी से समझ सकें।

2. XOR ऑपरेटर के बेसिक्स

XOR क्या है?

XOR (एक्सक्लूसिव OR) दो संख्याओं की तुलना बिट दर बिट करता है और बिट्स अलग होने पर “1” लौटाता है, या समान होने पर “0”। उदाहरण के लिए, संख्याओं 5 और 9 की बिट दर बिट तुलना करने पर XOR ऑपरेशन का परिणाम निम्नानुसार होगा:

  • 5 का बाइनरी: 0101
  • 9 का बाइनरी: 1001

इन बिट्स की XOR का उपयोग करके तुलना निम्नलिखित उत्पन्न करती है:

Bit Position5 (0101)9 (1001)XOR Result
1011
2101
3000
4110

परिणाम 1100 है, जो दशमलव में “12” है। XOR के इस बेसिक व्यवहार को समझकर, आप इसे अधिक जटिल बिटवाइज ऑपरेशंस पर लागू कर सकते हैं।

侍エンジニア塾

3. सैंपल कोड के साथ XOR को समझना

XOR का उपयोग करने का बेसिक उदाहरण

यहाँ सी में XOR ऑपरेशन करने का एक सरल उदाहरण है। यह कोड संख्याओं 5 और 9 पर XOR ऑपरेशन लागू करता है और परिणाम प्रदर्शित करता है।

#include <stdio.h>

int main() {
    int a = 5;
    int b = 9;
    int result = a ^ b;

    printf("5 XOR 9 = %dn", result);  // Result is 12
    return 0;
}

यह कोड वेरिएबल्स a और b के बिटवाइज XOR की गणना करता है और परिणाम को result में सहेजता है। जब निष्पादित किया जाता है, तो यह “5 XOR 9 = 12” प्रदर्शित करता है। यह बिटवाइज ऑपरेशंस को दृश्य रूप से समझने के लिए एक शानदार उदाहरण है।

4. XOR के व्यावहारिक अनुप्रयोग

XOR का उपयोग करके वेरिएबल वैल्यूज को स्वैप करना

XOR की अद्वितीय गुणों का लाभ उठाकर, आप एक टेम्पररी वेरिएबल का उपयोग किए बिना दो वेरिएबल्स के वैल्यूज को स्वैप कर सकते हैं। निम्नलिखित कोड XOR का उपयोग करके a और b के वैल्यूज को स्वैप करने का तरीका दिखाता है:

#include <stdio.h>

int main() {
    int a = 5;
    int b = 7;

    printf("Before swap: a = %d, b = %dn", a, b);

    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

    printf("After swap: a = %d, b = %dn", a, b);
    return 0;
}

इस कोड में, a और b के वैल्यूज को तीन बार XOR लागू करके कुशलतापूर्वक स्वैप किया जाता है। यह आपको टेम्पररी वेरिएबल के बिना वैल्यूज का आदान-प्रदान करने की अनुमति देता है, जो मेमोरी बचाने में मदद करता है।

5. वास्तविक दुनिया के उदाहरण और अनुप्रयोग

एरेज में डुप्लिकेट्स या विषम घटनाओं का पता लगाना

XOR का उपयोग एरेज में डुप्लिकेट एलिमेंट्स या जो एलिमेंट्स विषम संख्या में दिखाई देते हैं, उनका कुशलतापूर्वक पता लगाने के लिए भी किया जा सकता है। नीचे डुप्लिकेट एलिमेंट्स और विषम घटनाओं वाले एलिमेंट्स को खोजने के उदाहरण दिए गए हैं।

डुप्लिकेट नंबर्स को खोजना

#include <stdio.h>

int findDuplicate(int nums[], int size) {
    int duplicate = 0;
    for (int i = 0; i < size; i++) {
        duplicate ^= nums[i];
    }
    return duplicate;
}

int main() {
    int nums[] = {1, 2, 3, 2, 4};
    int size = sizeof(nums) / sizeof(nums[0]);

    printf("Duplicate number is: %dn", findDuplicate(nums, size));
    return 0;
}

यह कोड एरेज में डुप्लिकेट वैल्यूज का पता लगाने के लिए XOR का उपयोग करता है। उसी वैल्यू को दो बार XOR करने से 0 प्राप्त होने की संपत्ति का लाभ उठाकर, केवल डुप्लिकेट वैल्यू परिणाम में बनी रहती है।

विषम संख्या में घटित होने वाले नंबर्स का पता लगाना

#include <stdio.h>

int findOddOccurrence(int nums[], int size) {
    int result = 0;
    for (int i = 0; i < size; i++) {
        result ^= nums[i];
    }
    return result;
}

int main() {
    int nums[] = {5, 3, 9, 3, 5, 9, 7};
    int size = sizeof(nums) / sizeof(nums[0]);

    printf("Odd occurring number is: %dn", findOddOccurrence(nums, size));
    return 0;
}

इस कोड में, XOR ऑपरेशन के बाद केवल वह संख्या जो विषम संख्या बार आती है, शेष रहती है, जिससे इसे पहचानना आसान हो जाता है।

डेटा एन्क्रिप्शन के लिए XOR का उपयोग

XOR का उपयोग डेटा एन्क्रिप्शन के लिए भी किया जाता है। निम्नलिखित कोड XOR का उपयोग करके सरल एन्क्रिप्शन और डिक्रिप्शन को दर्शाता है:

#include <stdio.h>

void encryptDecrypt(char data[], char key) {
    for (int i = 0; data[i] != ''; i++) {
        data[i] = data[i] ^ key;
    }
}

int main() {
    char data[] = "Hello World";
    char key = 'K';

    printf("Original: %sn", data);
    encryptDecrypt(data, key);
    printf("Encrypted: %sn", data);
    encryptDecrypt(data, key);
    printf("Decrypted: %sn", data);

    return 0;
}

यह कोड प्रत्येक अक्षर पर XOR ऑपरेशन लागू करके डेटा को एन्क्रिप्ट और डिक्रिप्ट करता है। समान कुंजी के साथ फिर से XOR लागू करने पर आप डेटा को उसकी मूल स्थिति में वापस ला सकते हैं, जिससे यह एक सरल एन्क्रिप्शन विधि बनती है।

6. निष्कर्ष

इस लेख ने C में XOR ऑपरेशन की मूल बातें और उन्नत उपयोग मामलों को समझाया। XOR का उपयोग विभिन्न क्षेत्रों में किया जाता है, जैसे डेटा एन्क्रिप्शन, त्रुटि जाँच, प्रोग्राम अनुकूलन और हैश फ़ंक्शन डिज़ाइन। अपनी गति और दक्षता के कारण, यह बड़े पैमाने पर डेटा प्रोसेसिंग और उच्च-प्रदर्शन कंप्यूटिंग में एक महत्वपूर्ण भूमिका निभाता है।

आशा है कि इस लेख ने आपको यह समझने में मदद की होगी कि XOR ऑपरेशन्स कितने शक्तिशाली हो सकते हैं और आप भविष्य के प्रोग्रामिंग प्रोजेक्ट्स में उनका उपयोग कर सकेंगे।