Question about how data sent from the tmp102 is processed
The ( MSB &lt;&lt; 8) | LSB) is understood: you want to concatinate the two bytes together. Apparently, in LSB only the [7:4] are valid data. So, you >>4 to get rid of the [3:0] bits. Now, the 0.0625 multiplication is not clear, but it is the same thing as dividing by 16, or performing another >>4 bit shift. The end result in the temp is the MSB only.

MSB: 1010 1010
LSB: 0001 XXXX

MSB&lt;&lt;8     1010 1010 0000 0000  
LSB                  0001 XXXX

when ORed
           1010 1010 0001 XXXX

when shifted &gt;&gt;4
           0000 1010 1010 0001

when multiplied *0.0625
           0000 0000 1010 1010=MSB