All submissions

Extract Even Bits Only from 32-bit Register

Code

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

uint32_t extract_even_bits(uint32_t reg) {
    //for loop to check each even position, if there is a bit, add it to the output 
    uint32_t output = 0; 
    uint32_t pos = 1; 
    for (int i = 0; i < 32; i += 2){ 
        if ((reg >> i) & 0x1){ 
            // shift it first, because shifting it after caused problems, shifting 0 at the start still is 0 
            output = output << pos;
            output |= 0x01; 
        }
    }
    return output; 
}

int main() {
    uint32_t reg;
    scanf("%u", &reg);
    printf("%u", extract_even_bits(reg));
    return 0;
}

Solving Approach

 

 

 

Loading...

Input

85

Expected Output

15