Estava pensando em fazer um compactador, mas para a idéia dar certo eu precisaria guardar cada bit gastando-se o mínimo possível de espaço. Tipo, o programa deverá ler alguns bits guardados no HD, mas quantos bits gasta-se para guardar 1 bit? Por exemplo, vai ter duas variáveis, vou ter que colocar o número 0 em uma e o número 1001 em outra mas de preferência deveria gastar apenas um bit para cada bit guardado. Primeiro pensei em guardar em um arquivo de texto, mas pra cada bit no arquivo de texto gastaria-se 8 bits(1 caractere) o que inviabilizaria a ideia. Então tinha que guardar o número binário diretamente no HD, mas eu não sei como nem quantos bits eu vou gastar para guardar cada bit.
Com exceção do tipo boolean, nenhum outro tipo primitivo em java guarda bit, o mínimo de armazenamento que conseguirá é um byte como mostra nessa apostila da caelum.