import Foundation
// Function to find the position of the first set bit
func 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 & -num isolates the lowest set bit.
log2(...) gives the zero-based index of that bit.
*/
return Int(log2(Double(num & -num)))
}
func main() {
let num = 4224 // 0001 0000 1000 0000
// Find and display the position of the first set bit
let position = findFirstSetBitPosition(num)
if position == 0 {
print("The number has no set bits (it's 0).")
} else {
print("The position of the first set bit is: \(position)")
}
}
main()
/*
run:
The position of the first set bit is: 7
*/