#include <stdio.h>
#include <stdint.h>
// Complete the function
uint16_t highest_set_bit(uint16_t reg) {
int count = 0;
int check = 0;
uint16_t test = 0;
if(reg == 0){
return reg;
}
else{
while (!check){
test = (reg << count) | (reg >> (sizeof(reg) * 8 - count));
check = ((test & 32768) == 32768)? 1 : 0;
count++;
}
reg &= (32768 >> (count - 1));
return reg;
}
}
int main() {
uint16_t reg;
scanf("%hu", ®);
uint16_t result = highest_set_bit(reg);
printf("%hu", result);
return 0;
}
Input
44
Expected Output
32