#include <stdio.h> #include <stdint.h> typedef union { uint32_t value; uint8_t bytes[4]; } Register; // Write logic here using union to modify byte[1] and byte[2] void modify_and_print(uint32_t input, uint8_t b1, uint8_t b2) { // Your logic here Register reg; reg.value = input; reg.bytes[0] = (uint8_t)input; reg.bytes[1] = (uint8_t)(input>>8); reg.bytes[2] = (uint8_t)(input>>16); reg.bytes[3] = (uint8_t)(input>>24); reg.bytes[1] = b1; reg.bytes[2] = b2; uint32_t recon = 0; recon |= reg.bytes[0]; recon |= reg.bytes[1]<<8; recon |= reg.bytes[2]<<16; recon |= reg.bytes[3]<<24; printf("%ld", recon); } int main() { uint32_t num; uint8_t b1, b2; scanf("%u %hhu %hhu", &num, &b1, &b2); modify_and_print(num, b1, b2); return 0; }
Test Cases
Test Results
Input
305419896 170 187
Expected Output
314288760