I understand these results:
iex(1)> for <<b::1 <- <<0xff::16>> >>, do: b
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
iex(2)> for <<b::2 <- <<0xff::16>> >>, do: b
[0, 0, 0, 0, 3, 3, 3, 3]
iex(3)> for <<b::3 <- <<0xff::16>> >>, do: b
[0, 0, 1, 7, 7]
iex(4)> for <<b::4 <- <<0xff::16>> >>, do: b
[0, 0, 15, 15]
iex(5)> for <<b::5 <- <<0xff::16>> >>, do: b
[0, 3, 31]
but here I’d expect [3, 63]
…
iex(6)> for <<b::6 <- <<0xff::16>> >>, do: b
[0, 15]
… and [1, 127]
here
iex(7)> for <<b::7 <- <<0xff::16>> >>, do: b
[0, 63]
this makes sense again
iex(8)> for <<b::8 <- <<0xff::16>> >>, do: b
[0, 255]