Bit operations: Test a bit
Problem: given int i, is bit n set (equal to 1)?
    bn b0
i 0000 0000 0000 0000
0000
0000 0000 0010
bit n
How can we test if this bit is 1?
We can use & operator with a "mask" variable:
mask 0000 0000 0000 0000
0010
0000 0000 0000
if (i & mask)
printf ("yes");
else
printf ("no");
What is the problem with this?
We would need 32 different masks, depending on the value of n!
Answer:
i  & (1 << n)  /* idiom */
or
(i >> n) & 1 (Shift nth bit to first location, compare to mask of 1)