Помните, что вам не нужно связывать себя узлами со сдвигом бит, если вы не слишком знакомы с деталями. Вы можете использовать ByteBuffer, чтобы помочь вам:
ByteBuffer bb = ByteBuffer.allocate(2);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put(firstByte);
bb.put(secondByte);
short shortVal = bb.getShort(0);
И наоборот, вы можете поставить короткий, а затем вытащить байты.
Кстати, побитовые операции автоматически переводят операнды как минимум на ширину целого числа. На самом деле нет понятия «не разрешено сдвигать байт больше, чем на 7 бит», и других слухов, которые, кажется, вращаются.