自己的三十行模拟:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
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<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
int main() {
unsigned int n;
cin >> n;
//注意左移后移的优先级
cout << (n << 16) + (n >> 16) << endl;
}