自己的三十行模拟:
#include#include #include #include using namespace std; int main() { unsigned int n,sum=1,t=0; int a[16], b[16]; cin >> n; for (int i = 0; i < 16; ++i) { a[i] = n & 1; n>>= 1;//不要忘记等于 } for (int i = 0; i < 16; ++i) { b[i] = n & 1; n >>= 1; } for (int i = 0; i < 16; ++i) { if (b[i]) t += sum; sum *=2; } for (int i = 0; i < 16; ++i) { if (a[i]) t += sum; sum *=2; } cout << t << endl;//越界的时候无符号数为0 }
看洛谷大佬题解后:十行
#include#include #include #include using namespace std; int main() { unsigned int n; cin >> n; //注意左移后移的优先级 cout << (n << 16) + (n >> 16) << endl; }



