#include <stdio.h>
#include <stdint.h>
// Complete the function
uint16_t highest_set_bit(uint16_t reg) {
if(reg==0) return 0;
reg|= reg>>1;
reg|= reg>>2;
reg|= reg>>4;
reg|= reg>>8;
return reg & ~(reg>>1);
/* if (reg == 0) return 0; // If input is 0, return 0
// Find the position of the highest set bit
int pos = 15; // Start from the leftmost bit (bit 15)
while (pos >= 0) {
if (reg & (1 << pos)) {
// If this bit is set, return a number with only this bit set
return (1 << pos);
}
pos--;
}*/
}
int main() {
uint16_t reg;
scanf("%hu", ®);
uint16_t result = highest_set_bit(reg);
printf("%hu", result);
return 0;
}
Input
44
Expected Output
32