#include <stdio.h>
#include <stdint.h>
// Complete the function
uint16_t highest_set_bit(uint16_t reg)
{
// Your logic here
// My own approach
uint8_t count = 0;
for(uint8_t i = 0; i < 16; i++)
{
if((reg & (1<<15))==0)
{
count++;
}
else
{
break;
}
reg = (reg << 1);
}
reg = 0;
reg = (1<<(15-count));
return reg;
}
int main()
{
uint16_t reg;
scanf("%hu", ®);
uint16_t result = highest_set_bit(reg);
printf("%hu", result);
return 0;
}
// Below is AI generated
// 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);
// }
This is not the best i would say, but i did it without using AI
Input
44
Expected Output
32