Keep Only the Highest Set Bit

Code

#include <stdio.h>
#include <stdint.h>

// Complete the function
uint16_t highest_set_bit(uint16_t reg) 
{
    int i=0;
    int pos_1=0;
    while(i<16)
    {
      if ((reg & (1U<<i)) !=0)
      {
        pos_1=i;
      }
      i++;  
}
   for(int j=0;j<16;j++)
   {
     if(((reg & (1U<<j))!=0) && (j!=pos_1))
     {
      reg &=~(1U<<j);
      }
    }
    return (reg);
}
uint16_t highest_set_bit(uint16_t);
int main() 
{
    uint16_t reg;
    scanf("%hu", &reg);

    uint16_t result = highest_set_bit(reg);
    printf("%hu", result);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

44

Expected Output

32