No entanto quando vou salvar, cada caractere/símbolo acaba ocupando 1byte (8 bits).
Alguém saberia me dizer como que eu poderia fazer para graver cada um dos meus símbolos em apenas 1 bit, no caso em cada byte eu queria armazenar 8 bits.
Para outras, você vai ter de manualmente compactar os bits dentro dos bytes, usando operações “<<” e “|”. Vou dar um exemplo rebuscado.
// Objetivo: criar um byte que é a sequência binária 1010.0101intx=0;x=(x<<1)|1;// [1]010.0101x=(x<<1)|0;// 1[0]10.0101x=(x<<1)|1;// 10[1]0.0101x=(x<<1)|0;// 101[0].0101x=(x<<1)|0;// 1010.[0]101x=(x<<1)|1;// 1010.0[1]01x=(x<<1)|0;// 1010.01[0]1x=(x<<1)|1;// 1010.010[1]System.out.println(Integer.toBinaryString(x));// deve imprimir 10100101byteb=(byte)x;// aqui está seu byte contendo a sequência binária 1010.0101