object FirstSetBit {
// Function to find the position of the first set bit
def findFirstSetBitPosition(num: Int): Int = {
// Edge case: If the number is 0, there are no set bits
if (num == 0) {
0 // Return 0 to indicate no set bit
} else {
/*
* num & -num isolates the lowest set bit.
* log2(...) gives the zero-based index of that bit.
*/
(math.log(num & -num) / math.log(2)).toInt
}
}
def main(args: Array[String]): Unit = {
val num = 4224 // Binary: 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(s"The position of the first set bit is: $position")
}
}
}
/*
run:
The position of the first set bit is: 7
*/
/*
run:
swap() left: 0 right: 8
left: 1
right: 7
swap() left: 2 right: 6
left: 3
swap() left: 4 right: 5
Sorted array: 0 0 0 0 0 1 1 1 1
*/