fun reverseBits(n: UInt): UInt {
val bin = n.toString(2).padStart(32, '0')
val rev = bin.reversed()
return rev.toUInt(2)
}
fun bits(n: UInt): String {
val bin = n.toString(2).padStart(32, '0')
return bin.chunked(8).joinToString(" ")
}
fun main() {
val a = 19u
val b = 3u
val ra = reverseBits(a)
val rb = reverseBits(b)
println("Original 19: ${bits(a)}")
println("Reversed 19: ${bits(ra)}")
println()
println("Original 3: ${bits(b)}")
println("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
*/