I don't know if the operator precedence in Java is the same as in C, but the bit shift operator has low precedence. It might be necessary to use parentheses to ensure that the right value is used in the shift operation.
value = (short) ((high << 8) | low) ;