#include <stdio.h> #include <stdint.h> uint16_t highest_set_bit(uint16_t reg) { if (reg == 0) return 0; // special case: no set bits for (int i = 15; i >= 0; i--) { if (reg & (1 << i)) { return (1 << i); // immediately return highest bit } } return 0; // not reached, but keeps compiler happy } int main() { uint16_t reg; scanf("%hu", ®); uint16_t result = highest_set_bit(reg); printf("%hu\n", result); return 0; }
Test Cases
Test Results
Input
44
Expected Output
32