Keep Only the Highest Set Bit

Code

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


uint16_t bit_high(uint16_t reg){
    if(reg == 0) return 0;
    uint16_t mask = (1U << 15);
    while((reg & mask) == 0){
        mask >>= 1;
    }
    return mask;
}

int main(){
    uint16_t reg ;
    scanf("%hu", &reg);

    uint16_t result = bit_high(reg);
    printf("%hu", result);

    return 0; 
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

44

Expected Output

32