# बिटवाइज़ ऑपरेटर्स और बिट फ्लैग्स — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-bitwise-operators

> व्यक्तिगत बिट्स पर सीधे काम करें।

## छह बिटवाइज़ ऑपरेटर

`&` AND, `|` OR, `^` XOR, `~` NOT (हर बिट पलटता है), `<<` लेफ्ट शिफ्ट (हर शिफ्ट में 2 से गुणा), `>>` राइट शिफ्ट (हर शिफ्ट में 2 से भाग)।

## बिट सेट, क्लियर, टॉगल, जाँचें

ये चार पैटर्न लगभग हर बिट-फ्लैग काम को कवर करते हैं।

```c
unsigned int flags = 0;

flags |= (1 << 2);   // set bit 2
flags &= ~(1 << 2);  // clear bit 2
flags ^= (1 << 2);   // toggle bit 2

if (flags & (1 << 2)) {
    printf("bit 2 is set\n");
}
```

## बिट फ्लैग क्यों?

कई बूलियन विकल्पों को एक इंटीजर में पैक करना (हर बिट = एक ऑन/ऑफ फ्लैग) मेमोरी बचाता है और एम्बेडेड सिस्टम, परमिशन सिस्टम और हार्डवेयर रजिस्टर में आम है।

**Quiz:** कौन-सा ऑपरेटर किसी मान की हर बिट पलटता है?

- [x] ~ (NOT)
- [ ] ^ (XOR)
- [ ] & (AND)

*Answer:* ~ (NOT). बिटवाइज़ NOT (~) अपने operand की हर बिट उलट देता है।
