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) {
    // Your code here
    int num = 0,i=0;
    for(int pos=0;pos<32;pos++){
        if(pos % 2 == 0){
            num = num | ((reg>>pos&1)<< i) ;
            i++;
        }
    }

//     for(int pos=0;pos<=31;pos+=2){
//             num = num | ((reg>>pos&1)<< i) ;
//             i++;
//     }
//    // return num;

     return num;
}

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

Solving Approach

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

uint32_t extract_even_bits(uint32_t reg) {
    // Your code here
    int num = 0,i=0;
    for(int pos=0;pos<32;pos++){
        if(pos % 2 == 0){
            num = num | ((reg>>pos&1)<< i) ;
            i++;
        }
    }

//     for(int pos=0;pos<=31;pos+=2){
//             num = num | ((reg>>pos&1)<< i) ;
//             i++;
//     }
//    // return num;

     return num;
}

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



int num = 0,i=0;
    for(int pos=0;pos<32;pos++){
        if(pos % 2 == 0){
            num = num | ((reg>>pos&1) << i) ;
            i++;
        }
    }
  1. for loop iterating till 32 

  2.  checking pos is modulus 2 == 0

  3.  (reg>>pos&1) >> extracting the bit from that position bit .

  4. after that placing it at position i in num by or operation and left shift

Loading...

Input

85

Expected Output

15