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
*/