All submissions

Keep Only the Highest Set Bit

O(1)

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

// Complete the function
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);


    /* if (reg == 0) return 0; // If input is 0, return 0

    // Find the position of the highest set bit
    int pos = 15; // Start from the leftmost bit (bit 15)
    while (pos >= 0) {
        if (reg & (1 << pos)) {
            // If this bit is set, return a number with only this bit set
            return (1 << pos);
        }
        pos--;
    }*/
}

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

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

Solving Approach

 

 

 

Loading...

Input

44

Expected Output

32