#include <stdio.h> #include <stdint.h> // Complete the function uint16_t highest_set_bit(uint16_t reg) { // Your logic here uint16_t ret_val = reg; while((reg & (reg-1)) != 0 ){ reg = reg & (reg-1); ret_val = reg; } return ret_val; /* //check for zero ret_val = 1U << 15; if(reg == 0) return 0; while(!(reg & ret_val)){ ret_val >>= 1; } return ret_val; */ } int main() { uint16_t reg; scanf("%hu", ®); uint16_t result = highest_set_bit(reg); printf("%hu", result); return 0; }
refer previous problem, isolate the leftmost bit by using bitwise anding operation or by checking each value until bitwise result is 0.
Test Cases
Test Results
Input
44
Expected Output
32