9. Keep Only the Highest Set Bit

Discussions2
Log in to post comments and replies.
You
Loading editor...
GauthamShankar
GauthamShankar
Jun 14 2026

    uint16_t highest_set_bit(uint16_t reg) {

        reg|=reg>>1;

        reg|=reg>>2;

        reg|=reg>>4;

        reg|=reg>>8;

        return reg&~(reg>>1);

    }

O(1) time complexity 

+2
quoctoanahihi123
quoctoanahihi123
May 20 2026

#include <stdio.h>

#include <stdint.h>

 

// Complete the function

uint16_t highest_set_bit(uint16_t reg) {

    // Your logic here

    for (int i = 15; i>=0 ; i--){

        if ( reg & (1<< i)){

            return reg &= (1<<i);

        }

    }

    return 0;

}

 

int main() {

    uint16_t reg;

    scanf("%hu", &reg);

    uint16_t result = highest_set_bit(reg);

    printf("%hu", result);

    return 0;

}

0