Here’s the Wikipedia entry for C’s bit operations:
Half way down they talk about bit shifting.
Here’s a simple example:
unsigned char x=1;
unsigned char y = x << 1;
The binary representation of x is 0000 0001. Doing 1 bit shift to the left gets you 0000 0010. So y==2.
For every bit shift operation, all the binary digits get shifted one position to the left. In effect, you are multiplying by 2, until you run out of bits. Any bit at the top gets lost in the bit shift.