import kotlin.math.log2
// Function to find the position of the first set bit
fun findFirstSetBitPosition(num: Int): Int {
// Edge case: If the number is 0, there are no set bits
if (num == 0) {
return 0 // Return 0 to indicate no set bit
}
/*
* num and -num isolates the lowest set bit.
* log2(...) gives the zero-based index of that bit.
*/
return log2((num and -num).toDouble()).toInt()
}
fun main() {
val num = 4224 // 0001 0000 1000 0000
// Find and display the position of the first set bit
val position = findFirstSetBitPosition(num)
if (position == 0) {
println("The number has no set bits (it's 0).")
} else {
println("The position of the first set bit is: $position")
}
}
/*
run:
The position of the first set bit is: 7
*/