studio programacion móviles libros libro desarrollo desarrollar curso aprende aplicaciones java byte bit-manipulation

java - móviles - manual de programacion android pdf



Establecer bit específico en byte (5)

Estoy tratando de establecer bits en la variable de bytes de Java. Proporciona métodos .setBit(i) como .setBit(i) . ¿Alguien sabe cómo puedo darme cuenta de esto?

Puedo iterar en bits a través de un byte dado:

if( (my_byte & (1 << i)) == 0 ){ }

Sin embargo, no puedo establecer esta posición en 1 o 0, ¿verdad?


Consulte la clase java.util.BitSet que hace el trabajo por usted.

Para establecer: myByte.set(bit); Para restablecer: myByte.clear(bit); Para completar con un bool: myByte.set(bit, b); Para obtener el bool: b = myByte.get(bit); Obtener el mapa de bits: byte bitMap = myByte.toByteArray()[0];


La técnica que necesita es aislar el bit elegido y establecerlo o borrarlo. Ya tienes la expresión para aislar el bit ya que estás usando eso para probarlo más arriba. Puede establecer el bit ORing it in, o borrar el bit por bit Y con el complemento de 1 del bit.

boolean setBit; my_byte = setBit ? myByte | (1 << i) : myByte & ~(1 << i);


Para establecer un bit:

myByte |= 1 << bit;

Para borrarlo:

myByte &= ~(1 << bit);



Use los operadores O ( | ) y AND ( & ) bit a bit. Para establecer un bit, es decir, convertir el bit en pos en 1 :

my_byte = my_byte | (1 << pos); // longer version, or my_byte |= 1 << bit;` // shorthand

Para desestabilizar un poco, o ponerlo a 0 :

my_byte = my_byte & ~(1 << pos); // longer version, or my_byte &= ~(1 << bit); // shorthand

Para ver ejemplos, vea Operadores Avanzados de Java / Bitwise