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);
Solo para complementar la respuesta de Jon y la respuesta de driis
Para alternar (invertir) un poco
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