🔴 Advanced  ·  Lesson 43

Bitwise Operations

Bitwise operators क्या हैं?

C में ज़्यादातर operators पूरी संख्याओं पर काम करते हैं। Bitwise operators एक स्तर और गहरे जाते हैं — ये उन अलग-अलग bits (0 और 1) पर काम करते हैं जिनसे कोई number बनता है। इससे ये compact flags, masks और चतुर तेज़ tricks के लिए एकदम उपयुक्त हैं।

साथ चलने के लिए याद रखें कि 5 जैसी छोटी संख्या bits में इस तरह रखी जाती है: 5 = 0101 और 3 = 0011। Bitwise operators इन bits की तुलना या इन्हें सरकाते हैं।

छह operators

Operatorनामक्या करता है
&AND1 तभी जब दोनों bits 1 हों
|OR1 अगर कोई भी bit 1 हो
^XOR1 तभी जब bits अलग हों
~NOTहर bit पलट देता है
<<Left shiftBits बाएँ सरकाता है (हर बार ×2)
>>Right shiftBits दाएँ सरकाता है (हर बार ÷2)

AND, OR, XOR example से

चलिए 5 (0101) और 3 (0011) लें और हर result bit-by-bit देखें।

C Language
#include <stdio.h>
int main() {
    int a = 5, b = 3;          // 0101 और 0011
    printf("a & b = %d\n", a & b);   // 0001 = 1
    printf("a | b = %d\n", a | b);   // 0111 = 7
    printf("a ^ b = %d\n", a ^ b);   // 0110 = 6
    return 0;
}
Output:
a & b = 1
a | b = 7
a ^ b = 6

AND सिर्फ़ वे bits रखता है जो दोनों में 1 हैं। OR 1 रखता है अगर किसी में भी हो। XOR सिर्फ़ वहाँ 1 रखता है जहाँ वे अलग हों।

NOT और shift operators

~ हर bit पलट देता है। Shifts bits को बाएँ या दाएँ सरकाते हैं, जो 2 की powers से गुणा या भाग करता है।

C Language
#include <stdio.h>
int main() {
    int x = 4;                 // 0100
    printf("x << 1 = %d\n", x << 1);  // 1000 = 8  (×2)
    printf("x >> 1 = %d\n", x >> 1);  // 0010 = 2  (÷2)
    printf("~x    = %d\n", ~x);        // सभी bits पलटता है
    return 0;
}
Output:
x << 1 = 8
x >> 1 = 2
~x = -5
💡 Shifts तेज़ गणित हैं

x << 1 बराबर है x * 2, और x >> 1 बराबर है x / 2। Shifting 2 की powers से गुणा या भाग का बहुत तेज़ तरीका है।

Bitwise & बनाम logical &&

यह कई beginners को उलझाता है। ये दिखने में मिलते-जुलते हैं पर बिल्कुल अलग काम करते हैं।

Expressionप्रकार5 और 3 का result
5 & 3Bitwise AND1 (bits की तुलना)
5 && 3Logical AND1 (दोनों true हैं)
⚠️ ध्यान दें

Bit operations के लिए & और conditions के लिए && इस्तेमाल करें। if (a && b) की जगह if (a & b) लिखना चुपचाप गलत logic दे सकता है।

उपयोगी bit tricks

ये तीन patterns interviews और असली code में बार-बार आते हैं:

C Language
// जाँचें कि position pos पर bit set है
int isSet = (x >> pos) & 1;

// pos पर bit set (on) करें
x = x | (1 << pos);

// pos पर bit clear (off) करें
x = x & ~(1 << pos);

आप XOR को यह जाँचने के लिए भी देखेंगे कि number विषम है (x & 1) और बिना temp variable swap करने के लिए (देखें बिना third variable swap)।

आम गलतियाँ

  • Bitwise &/| को logical &&/|| से उलझाना।
  • Type में जितने bits हैं उससे ज़्यादा shift करना, जो undefined behaviour है।
  • यह उम्मीद करना कि ~x बस एक value हटा देगा — यह हर bit पलटता है, अक्सर negative number देता है।
  • float या double पर bitwise operators इस्तेमाल करना — ये सिर्फ़ integers पर चलते हैं।
🏋️ अभ्यास

एक program लिखें जो एक number पढ़े और loop में (x >> i) & 1 से बताए कि उसके सबसे निचले 4 bits में से हर एक 0 है या 1। इसे 5, 8 और 15 से test करें।

सारांश

  • Bitwise operators अलग-अलग bits पर काम करते हैं: &, |, ^, ~, <<, >>
  • AND साझा 1s रखता है, OR जोड़ता है, XOR अंतर दर्शाता है, NOT पलटता है।
  • Left shift गुणा और right shift 2 की powers से भाग करता है।
  • Bitwise &, logical && जैसा नहीं है।
  • Shift-and-mask patterns से bit check/set/clear करें।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C में bitwise operators क्या हैं?
Bitwise operators integer values के अलग-अलग bits (0 और 1) पर सीधे काम करते हैं। C में छह हैं: AND &, OR |, XOR ^, NOT ~, left shift << और right shift >>। ये flags, masks और तेज़ arithmetic जैसे low-level कामों में इस्तेमाल होते हैं।
C में & और && में क्या अंतर है?
एकल & bitwise AND है — यह दोनों numbers की bit-by-bit तुलना करके एक number देता है। दोहरा && logical AND है — यह हर पक्ष को true/false मानकर 1 या 0 देता है। एक की जगह दूसरा इस्तेमाल करना बहुत आम bug है।
Left shift operator क्या करता है?
Left shift x << n, x के सभी bits को n स्थान बाईं ओर सरकाता है, दाईं ओर zeros भरते हुए। हर एक left shift value को दोगुना करता है, तो x << 1 2 से गुणा जैसा है और x << 3 8 से गुणा करता है।
C में XOR किसके लिए इस्तेमाल होता है?
XOR ^ तभी 1 देता है जब दोनों bits अलग हों। यह bits toggle करने, बिना temporary variable दो numbers swap करने, और सरल checksums तथा encryption में इस्तेमाल होता है। एक उपयोगी गुण यह है कि कोई भी value खुद से XOR होकर 0 बन जाती है।
C में किसी विशेष bit के set होने की जाँच कैसे करें?
जिस position की परवाह है वहाँ 1 shift करके number से AND करें: (x >> pos) & 1 उस bit के set होने पर 1, वरना 0 देता है। किसी एक bit को पढ़ने का यही मानक तरीका है।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.