#include <iostream> #include <cstdint> using namespace std; union ByteSplitter { uint16_t word; uint8_t bytes[2]; }; int main() { uint16_t val; cin >> val; ByteSplitter u; u.word = val; cout << "LSB=" << (int)u.bytes[0] << " MSB=" << (int)u.bytes[1]; return 0; }
Explanation & Logic Summary:
The union overlays memory so that word and bytes[] share the same address.
word
bytes[]
Writing to word allows direct access to its individual bytes.
On little-endian systems:
bytes[0]
bytes[1]
This technique avoids shifting and masking when splitting multi-byte data.
Firmware Relevance & Real-World Context:
Test Cases
Test Results
Input
4660
Expected Output
LSB=52 MSB=18