Why do you need to shift bits when reading from an analog sensor?
You read bytes in the order: 


Most significant byte   (let's call this msb)
Least significant byte  (let's call this lsb)


The formula to get to real value is msb * 256 + lsb
256 because this is the value of the maximum value of one byte, + 1. which is bits (2 ^ 8 = 256).

However, a CPU is normally faster in bit operations than in arithmetic operations.  

Assume msb is 10101010
and lsb is    11001100


Now below is the table with the calculation order

sensor value             msb         lsb
00000000 00000000        10101010    11001100
00000000 10101010                                sensor value = msb
10101010 00000000                                msb &lt;&lt; 8, or msb * 256
10101010 11001100                                (msb &lt;&lt; 8) + lsb, or (msb * 256) + lsb


Actually I would expect a cast to an unsigned byte type (8 bits). However, if the values msb or lsb would be floating points/doubles, than the remainder will be removed, leaving an integer (whole) number.