the bits should be arranged like ``11_111101` no?
It's mostly how computer stores bits vs how we later read them by casting to uint16. I guess it's made to put stuff in the the easiest order to later retrieve the numbers... So I guess it puts the first one (b1 in first byte, b2 in second byte) as what we would see as an "end" of 1-byte number. So second_byte&0b111111 == b2, while b3 would require both a shift+bitwise. While retrieving b1 is just & and the rest is padding - imagine the unused field and the padding being in a different order with b1, having to have 2 small shifts +bitwise and to find b1...