It is both, a quick test shows
a = << 3 >>
IO.puts is_bitstring(a) # => true
IO.puts is_binary(a) # => true
When you write << 3 >>, there is an implicit ::size(8) modifier added. So, << 3 >> is the same as << 3 :: size(8) >> and since the number of bits is divisible by 8, it is a binary and a bitstring


















