vijos_高低位交换_位运算

发布于 2019-05-18  963 次阅读


题目描述

给出一个小于2^32的正整数。这个数可以用一个32位的二进制数表示(不足32位用0补足)。我们称这个二进制数的前16位为“高位”,后16位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示)


思路

将n分别向左右移16位然后相加就可以了


#include 
using namespace std;
unsigned long int n;
int main()
{
    cin>>n;
    cout<<((n << 16)|(n >> 16));
}
]]>