Extract Even Bits Only from 32-bit Register

Code

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

uint32_t extract_even_bits(uint32_t reg) 
{
    uint32_t result = 0x00; 
    uint32_t result1 = reg; 
    uint32_t len = 0x00; 
    while (result1 > 0) 
    { 
        result1 = result1 >> 1;
        len++; 
    } 
    //printf("%d\n",len ); 
    for(int i = 0; i < len; i+=2) 
    { 
        result = ((reg >> i) & 1); 
        //printf("res =%d ",result); 
        result1 = (result1 << 1) | result; 
        //printf("resa= %d ",result1); 
        } 
    return result1;

}

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

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

85

Expected Output

15