es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo invertir todos los bits en Java BitSet manteniendo su longitud

¿Cómo puedo invertir todos los bits en un Java BitSet, preservando su longitud?

Por ejemplo, dado el siguiente BitSet:

BitSet.valueOf(new byte[] { 0b100111 })
// {0, 1, 2, 5}

¿Existe un método sencillo para invertir todos los bits, preservando la longitud del BitSet (6, en el ejemplo anterior)?

Me gustaría obtener:

BitSet.valueOf(new byte[] { 0b011000 })
// { 3, 4 }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay un método sencillo para invertir todos los bits en un objeto BitSet de Java, conservando su longitud. Puede utilizar el método flip(int fromIndex, int toIndex) de la clase BitSet para invertir un rango de bits dentro del BitSet. Para invertir todos los bits, puede llamar a este método con fromIndex igual a 0 y toIndex igual a la longitud del BitSet. Aquí tienes un ejemplo:

    BitSet bitSet = BitSet.valueOf(new byte[] { 0b100111 });
    bitSet.flip(0, bitSet.length());
    

    Después de ejecutar este código, el BitSet contendrá los bits invertidos y su longitud se mantendrá sin cambios. Luego, puedes utilizar el método stream() de la clase BitSet para obtener un flujo de los bits establecidos:

    bitSet.stream().forEach(System.out::println);
    

    Esto producirá la siguiente salida:

    3
    4
    

Comments are closed.