La Web del Programador: Comunidad de Programadores
 
    Pregunta:  11002 - ESCRIBIR A NIVEL DE BITS
Autor:  leo sojo
como hago para escribir a nivel de bits en un archivo en java

  Respuesta:  David Olivan Ubieto
Para escribir en un archivo, lo primero que necesitas (supongo que lo sabras) es una clase OutputStream (o que herede, como FileOuputStream). Estas clases por defecto escriben tipos byte, que se almacenan como bytes propiamente (bien...). Asi que la unidad minima de informacion que puedes escribir en un fichero (y cualquier Stream) es un byte, como sucede en cualquier SO. Ahora bien, si lo que deseas es controlar lo que escribes byte a byte, puedes hacerlo utilizando tipos byte y controlando los bits mediante operaciones logicas (AND, XOR, OR, SHIFT, ...) o definiendo los bytes directamente en hexadecimal. Por ejemplo, si quieres mandar un byte con el tercer bit a uno:
byte b = 0x4;
con el quinto y el tercero (pasas de binario a hexadecimal y ya esta...):
byte b = 0x14;
que quieres poner a uno el segundo bit de un byte dado (pues usa la logica booleana):
b = b | 0x2; (compacto: b |= 0x2;)
que quieres limpiar (poner a cero) el tercer bit:
b = b & 0xFB; (compacto: b &= 0xFB;)
y asi hasta el infinito y mas alla...