#include <stdio.h>
#include <stdint.h>
uint32_t extract_even_bits(uint32_t reg) {
uint16_t result = 0;
uint16_t pos = 0;
while(reg)
{
result |= ((reg & 1U) << pos);
pos++;
reg >>= 2;
}
return result;
}
int main() {
uint32_t reg;
scanf("%u", ®);
printf("%u", extract_even_bits(reg));
return 0;
}
// you have to extract the even bit.
// result = 1100
// reg = 0101 0010
// while(reg) --->
// result |= ((reg & 1U) << pos);
// pos++;
// reg >>= 2;
// <---
// Iteration : 1
// result = 0000 0000
// pos = 0
// reg = 0101 0010
// |
// v
// (reg & 1U) << pos -> (0101 0010 & 0000 0001) << 0 --> (0000 0000)
// result = 0000 0000 |0000 0000 --> 0000 0000
// Iteration : 2
// result = 0000 0000
// pos = 1
// reg = 0001 0100
// |
// v
// (reg & 1U) << pos -> (0001 0100 & 0000 0001) << 1 --> (0000 0000)
// result = 0000 0000 |0000 0000 --> 0000 0000
// Iteration : 3
// result = 0000 0000
// pos = 2
// reg = 0000 0101
// |
// v
// (reg & 1U) << pos -> (0000 0101 & 0000 0001) << 2 --> (0000 0100)
// result = 0000 0000 |0000 0100 --> 0000 0100
// Iteration : 4
// result = 0000 0100
// pos = 3
// reg = 0000 0001
// |
// v
// (reg & 1U) << pos -> (0000 0001 & 0000 0001) << 3 --> (0000 1000)
// result = 0000 0100 | 0000 1000 --> 0000 0100
// result = 0000 1100