public class FirstSetBit {
// Function to find the position of the first set bit
public static int findFirstSetBitPosition(int num) {
// 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)(Math.log(num & -num) / Math.log(2));
}
public static void main(String[] args) {
int num = 4224; // 0001 0000 1000 0000
// Find and display the position of the first set bit
int position = findFirstSetBitPosition(num);
if (position == 0) {
System.out.println("The number has no set bits (it's 0).");
} else {
System.out.println("The position of the first set bit is: " + position);
}
}
}
/*
run:
The position of the first set bit is: 7
*/