目录
高低位交换
题目描述
给出一个小于 的正整数。这个数可以用一个 位的二进制数表示(不足 位用 补足)。我们称这个二进制数的前 位为“高位”,后 位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示) 。
例如,数用二进制表示为(添加了 11 个前导 补足为 位),其中前 16 位为高位,即
;后 位为低位,即
。将它的高低位进行交换,我们得到了一个新的二进制数 。它即是十进制的 249036820。
输入
一个小于 232232 的正整数。
输出
一个整数表示交换后的数。
解析
这里使用位运算我觉得是最简单的.
首先一个32位的正整数我们需要用无符号整型变量i来存储(有符号整型太小了)
其次我们需要将他的高位与低位进行互换。最后输出就行了。
直接上代码
代码
#include <bits/stdc++.h>
using namespace std;
int a[10010];
int b[10010];
int main(){
unsigned int n;
scanf("%u",&n);
printf("%u",(n<<16)|(n>>16));
return 0;
}