There are six bitwise operators used in the C programming language.

AND Operator &

Truth Table

0 & 0 = 0

1 & 0 = 0

0 & 1 = 0

1 & 1 = 1

OR Operator |

Truth Table

0 | 0 = 0

1 | 0 = 1

0 | 1 = 1

1 | 1 = 1

XOR Operator ^

Truth Table

0 ^ 0 = 0

1 ^ 0 = 1

0 ^ 1 = 1

1 ^ 1 = 0

NOT Operator ~

Truth Table

~0 = 1

~1 = 0

Right Shift Operator >>

Left Shift Operator <<

**Note:**

A unary operator is one which operates on a single operand where as a binary operator is one which operates on two operands

Mask

A mask is a bit pattern with some bits set to on (1) and some bits set to off (0)

Turning Bits On

number = number | MASK;

OR

number |= MASK;

This sets on all the bits that are 1 in the MASK

Turning Bits Off

number = number & ~MASK;

OR

number &= ~MASK;

This sets off all the bits that are 1 in the MASK

Toggling Bits

number = number ^ MASK;

OR

number ^= MASK;

This toggles values corresponding to 1s in the MASK

Comparing a Bit value

Checking if the value of bit at position p is set or not

number = 9

binary = 1 0 0 1

position = 1

mask = 1 0 0 0

if( ( number & mask ) == mask ) printf(" bit is set ");

Read more ...