Link
熟悉了位运算之后发现这。。。真的是一道橙题
思路
我们需要位移操作,即"<<“这玩意,和”>>"这玩意。
a<<b就是将a的二进制左移b位,相当于a*(2^b)
a>>b就是将a的二进制右移b位,相当于a/(2^b)(而且这玩意会把尾数吃掉)
然后就很简单了。
#include<cstdio>
long long n,a,b;
int main(){
scanf("%lld",&n);
a=n>>16; //前16位的数
b=n-(n>>16<<16)<<16; //后16位的数(可以自行推一下)放到前面
printf("%lld",a+b); //直接输出
}