#include <stdio.h>
void print_bits(int n, int size) {
for (int i = 1 << (size - 1); i > 0; i = i / 2) {
(n & i) ? printf("1") : printf("0");
}
}
int get_highest_bit_set(unsigned int n) {
int count = -1, i = 0;
while (n != 0) {
if (n & 1 == 1) {
count = i;
}
n = n >> 1;
i++;
}
return count;
}
int main() {
unsigned int n = 48;
print_bits(n, 8);
printf("\n");
int result = get_highest_bit_set(n); // from right
if (result == -1) {
printf("No bit is set");
}
else {
printf("Highest set bit = %d", result);
}
return 0;
}
/*
run
00110000
Highest set bit = 5
*/