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