#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", ®);
printf("%u", extract_even_bits(reg));
return 0;
}
#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", ®);
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++;
}
}
for loop iterating till 32
checking pos is modulus 2 == 0
(reg>>pos&1)
>> extracting the bit from that position bit .
after that placing it at position i
in num
by or operation and left shift
Input
85
Expected Output
15