All submissions

Keep Only the Highest Set Bit

Code

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

// Complete the function
uint16_t highest_set_bit(uint16_t reg) {
    // Your logic here
    uint16_t mask = 0x8000;

    while (mask > 0) {
    if (reg & mask) {
       reg = mask;
       break;
    }
    mask >>= 1;
}
    return reg;
}

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

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

Solving Approach

Created a mask with set bit at MSB for 16bit unsigned integer.  If the first set bit is reached, assign mask to reg to make the remaining bits of reg cleared. 

 

 

Loading...

Input

44

Expected Output

32