#include <stdio.h> #include <stdint.h> // Complete the function uint16_t highest_set_bit(uint16_t num) { // Your logic here if(num==0) return 0; uint16_t offset=0,numBits=16; while(numBits){ numBits>>=1; int a = (num>>(numBits)); if(a){ num>>=(numBits); offset+=numBits; } else{ num&=((1<<numBits)-1); } } return 1<<offset; } int main() { uint16_t reg; scanf("%hu", ®); uint16_t result = highest_set_bit(reg); printf("%hu", result); return 0; }
Test Cases
Test Results
Input
44
Expected Output
32