题目描述:
输入一个无符号整数n(unsigned int类型),n可以用一个32位的二进制数表示(不足32位用0补足),我们称这个二进制数的前16位为“高位”,后16位为“低位”,输出将n的高位和低位交换后的值(用十进制表示)。
例如:输入1314520,它的二进制表示为0000 0000 0001 0100 0000 1110 1101 1000(添加了11个0补足为32位),其中前16位为高位,即0000 0000 0001 0100;后16位为低位,即0000 1110 1101 1000。将它的高低位进行交换,得到了一个新的二进制数0000 1110 1101 1000 0000 0000 0001 0100,它对应的十进制数为249036820,所以输出249036820。
输入格式
一行,含一个无符号整数(unsigned int类型)
输出格式
一行,含一个无符号整数。
输入样例
1314520
输出样例
249036820
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
unsigned long long num;
cin>>num;
cout<<((num&0x0000ffff)<<16|(num&0xffff0000)>>16)<<endl;
}