Keep Only the Highest Set Bit

Code

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

// Function to keep only the highest set bit
uint16_t keepHighestBit(uint16_t reg) {
    if (reg == 0) return 0;

        uint16_t result = 1;
            while (reg >>= 1) {
                    result <<= 1;
                        }
                            return result;
                            }

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

                                        uint16_t updatedReg = keepHighestBit(reg);
                                            printf("%hu\n", updatedReg);

                                                return 0;
                                                }

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

44

Expected Output

32