Avatar ·

C++ में एकल बिट को सेट, रीसेट और टॉगल कैसे करें?

नमस्ते! मैं C++ में माइक्रोकंट्रोलर के लिए एक प्रोग्राम लिख रहा हूँ और रजिस्टरों के साथ काम कर रहा हूँ। मुझे अलग-अलग बिट्स को मैनेज करने की ज़रूरत है: उन्हें 1 पर सेट करना, 0 पर रीसेट करना और टॉगल (इनवर्ट) करना। मुझे पता है कि यह बिटवाइज़ ऑपरेशन्स से किया जाता है, लेकिन मैं सिंटैक्स में लगातार भ्रमित हो जाता हूँ। उदाहरण के लिए, मेरे पास एक वेरिएबल `uint8_t flags = 0b00001111;` है। मैं चाहता हूँ: 1. तीसरे बिट (शून्य से गिनती) को 1 पर सेट करना। 2. दूसरे बिट को 0 पर रीसेट करना। 3. पहले बिट को टॉगल करना (अगर 1 → 0, अगर 0 → 1)। अभी मैं ऐसा कर रहा हूँ: ```cpp uint8_t flags = 0b00001111; // बिट 3 सेट करें flags = flags | 0b00001000; // काम करता है, लेकिन असुविधाजनक // बिट 2 रीसेट करें flags = flags & 0b11111011; // मास्क में लगातार गलती करता हूँ // बिट 1 टॉगल करें flags = flags ^ 0b00000010; // यह काम करता है ``` सवाल: - क्या इसके लिए कोई सामान्य मैक्रोज़ या फंक्शन्स हैं? - बिट्स को सही तरीके से कैसे नंबर करें (शून्य से या एक से)? - क्या मैन्युअल रूप से मास्क की गणना करने से बचा जा सकता है? मैंने Stack Overflow पर पढ़ा, लेकिन वहाँ उदाहरण C में हैं, जबकि मुझे C++ चाहिए।