Qual é a diferença entre um binário e um bitstring em Erlang?

No shell Erlang, posso fazer o seguinte:

A = 300.
    300
<<A:32>>.
    <<0, 0, 1, 44>>

Mas quando eu tento o seguinte:

B = term_to_binary({300}).
    <<131,104,1,98,0,0,1,44>>
<<B:32>>
    ** exception error: bad argument
<<B:64>>
    ** exception error: bad argument

No primeiro caso, estou tomando um inteiro e usando a sintaxe de bitstring para colocá-lo em um campo de 32 bits. Isso funciona como esperado. No segundo caso, estou usando oterm_to_binary BIF para transformar a tupla em um binário, a partir do qual eu tento descompactar certos bits usando a sintaxe de bitstring. Por que o primeiro exemplo funciona, mas o segundo exemplo falha? Parece que ambos estão fazendo coisas muito parecidas.

questionAnswers(2)

yourAnswerToTheQuestion