How to reverse the bits of a number in Scala

1 Answer

0 votes
object BitReverse {

  def reverseBits(n: Int): Int = {
    val bin = String.format("%32s", Integer.toBinaryString(n)).replace(' ', '0')
    val rev = bin.reverse

    Integer.parseUnsignedInt(rev, 2)
  }

  def bits(n: Int): String = {
    val bin = String.format("%32s", Integer.toBinaryString(n)).replace(' ', '0')

    bin.grouped(8).mkString(" ")
  }

  def main(args: Array[String]): Unit = {
    val a = 19
    val b = 3

    val ra = reverseBits(a)
    val rb = reverseBits(b)

    println(s"Original 19: ${bits(a)}")
    println(s"Reversed 19: ${bits(ra)}")
    println()
    println(s"Original 3:  ${bits(b)}")
    println(s"Reversed 3:  ${bits(rb)}")
  }
}


/*
run:

Original 19: 00000000 00000000 00000000 00010011
Reversed 19: 11001000 00000000 00000000 00000000

Original 3:  00000000 00000000 00000000 00000011
Reversed 3:  11000000 00000000 00000000 00000000

*/

 



answered Apr 4 by avibootz
edited Apr 4 by avibootz
...