题目描述题目要求将323232位有符号整数的字节顺序反转从大端到小端或小端到大端。输入为整数输出原数和转换后的数。输入格式输入包含多个整数每行一个以文件结束符EOF\texttt{EOF}EOF终止。整数范围为−231-2^{31}−231到231−12^{31}-1231−1。输出格式对于每个整数输出一行格式为原数converts to转换后数。样例输入123456789 -123456789 1 16777216 20034556输出123456789 converts to 365779719 -123456789 converts to -349002504 1 converts to 16777216 16777216 converts to 1 20034556 converts to -55365375题目分析本题的核心是将323232位整数的字节顺序反转。可以使用位运算或二进制字符串操作。方法将整数视为323232位二进制串。将第000到777位与第242424到313131位交换第888到151515位与第161616到232323位交换。注意负数的处理使用无符号整数或位运算避免符号扩展问题。算法使用bitset32或位运算intreverseBytes(intx){return((x24)0xFF)|((x8)0xFF00)|((x8)0xFF0000)|((x24)0xFF000000);}复杂度分析O(1)O(1)O(1)。代码实现// One Little, Two Little, Three Little Endians// UVa ID: 594// Verdict: Accepted// Submission Date: 2016-08-10// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn;while(cinn){coutn converts to ;bitset32little(n);string binarylittle.to_string();string next;nextbinary.substr(24,8)binary.substr(16,8)binary.substr(8,8)binary.substr(0,8);if(next.front()0){bitset32big(next);coutbig.to_ulong()\n;}else{next.front()0;bitset32big(next);cout(int)(-pow(2,31)big.to_ulong())\n;}}return0;}