复习位运算

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 18 总提交人数: 19

题目描述

现有一个小于 $2^{32}$ 的正整数。小明发现这个数在现在的绝大多数机器上可以用一个$32$位的二进制数表示(不足$32$位用$0$补足)。他称这个二进制数的前$16$位为“高位”,后$16$位为“低位”。将它的高低位交换,可以得到一个新的数。他想知道这个新的数是多少(用十进制表示)。

例如,数$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$。

这里高低位交换是对无符号整数操作。

输入

一行。一个正整数$n$($n < 2^{32}$)

输出

一行。原正整数进行高低位交换后新的数。

输入样例

1314520

输出样例

249036820

HINT

常用的二进制运算有:左移(<<),右移(>>),按位与(&),按位或(|),按位异或(^),按位取反(~)等

Author 袁圆

相关推荐