Can anyone explain to me why this works...? (Signed integer data)

They are shift, not rotate. The shift left 16 moves the 16 bit value into the upper half of the 32 bit value. The shift right is a signed shift, so the shift right fills the upper word with the ms bit, which is the sign bit.