【二進制處理】洛谷P1100_高低位交換

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);  //直接輸出
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章