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 }
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étodoflip(int fromIndex, int toIndex)
de la claseBitSet
para invertir un rango de bits dentro delBitSet
. Para invertir todos los bits, puede llamar a este método confromIndex
igual a 0 ytoIndex
igual a la longitud delBitSet
. Aquí tienes un ejemplo: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étodostream()
de la claseBitSet
para obtener un flujo de los bits establecidos:Esto producirá la siguiente salida: