How to set specific bits and find the set bits indexes in Scala

1 Answer

0 votes
object BitSetDemo {
  val BitSize = 16

  // Print binary representation of the bits
  def printBinary(bits: Int): Unit = {
    println(String.format("%16s", Integer.toBinaryString(bits)).replace(' ', '0'))
  }
  
  // Find the first set bit (least significant)
  def findFirstSetBit(bits: Int): Option[Int] = {
    (0 until BitSize).find(i => (bits & (1 << i)) != 0)
  }

  def printSetBitIndexes(bits: Int): Unit = {
    val indexes = (0 until BitSize).filter(i => (bits & (1 << i)) != 0)
    println(indexes.mkString(" "))
  }

  def main(args: Array[String]): Unit = {
    var bits = 0
    bits |= 1 << 3
    bits |= 1 << 5
    bits |= 1 << 11
    bits |= 1 << 14

    printBinary(bits)

    findFirstSetBit(bits) match {
      case Some(index) => println(s"First set bit at index: $index")
      case None        => println("No bits are set.")
    }

    println("All the set bits indexes:")
    printSetBitIndexes(bits)
  }
}



/*
run:

0100100000101000
First set bit at index: 3
All the set bits indexes:
3 5 11 14

*/

 



answered Nov 4 by avibootz
...