如何取出某一段呢?很简单,对那一段做一个&运算。这里提一个小技巧:C++编译器支持直接书写16进制,方法是0x十六进制数[比如0x00000001就是十进制下的1]。2进制,就是0bXXXX...。
取出前16位,就是&0xffff0000,取后16位,就是&0x0000ffff。位移即可。
#include<bits/stdc++.h>usingnamespacestd;
intmain(){
unsignedint n;
cin>>n;
cout<<((n&0xffff0000)>>16)+((n&0x0000ffff)<<16);
return0;
}