AnyCompiler

Bitwise Operators

C ek integer ke bit pattern ka direct access deta hai: | bits set karta hai, & unhe test ya clear karta hai, ^ unhe toggle karta hai, aur << / >> bits ko left ya right shift karte hain. 1 << n sirf bit n set wali ek value produce karta hai — kai flags mein se ek ko ek single integer mein represent karne ka common pattern.

#include <stdio.h>

int main() {
    unsigned int flags = 0;
    flags |= 1 << 0;
    flags |= 1 << 2;
    printf("%u\n", flags);
    printf("%d\n", (flags & (1 << 2)) != 0);
    printf("%d\n", (flags & (1 << 1)) != 0);
    return 0;
}
Output
5
1
0

flags |= 1 << 0 aur flags |= 1 << 2 bits 0 aur 2 set karte hain, 5 (binary 101) produce karte hue. (flags & (1 << 2)) != 0 phir test karta hai ke bit 2 khaaskar set hai ya nahi, kisi bhi doosre bit se independent — wahi pattern jo operating systems, embedded code, aur network protocols kai boolean flags ko ek single integer mein pack karne ke liye istemal karte hain.

Aage: enums aur typedef — constants ko naam dena aur complex types ko chhote naam dena.

Practice exercise

Ek unsigned int flags ko 0 set karein, phir |= aur (1 << 3) se bit 3 set karein. (flags & (1 << 3)) != 0 istemal kar ke print karein ke bit 3 set hai ya nahi.