#include <iostream>
#include <cmath>
// Function to find the position of the first set bit
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 static_cast<int>(log2(num & -num));
}
int main() {
int num = 4224; // 0001 0000 1000 0000
// Find and display the position of the first set bit
int position = findFirstSetBitPosition(num);
if (position == 0) {
std::cout << "The number has no set bits (it's 0)." << std::endl;
} else {
std::cout << "The position of the first set bit is: " << position << std::endl;
}
}
/*
run:
The position of the first set bit is: 7
*/