高低位交換


高低位交換

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 78   Accepted Submission(s) : 56

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

給出一個小於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。

Input

一個小於2^32的正整數N

Output

高低位交換后的正整數

Sample Input

1314520

Sample Output

249036820

分析:

用位運算就可以解決問題了。

1 #include<stdio.h>
2 int main()
3 {
4     long int a;
5     scanf("%ld",&a);
6     a=((a&65535)<<16)+((a&4294901760)>>16);
7     printf("%ld\n",a);
8 return 0;
9 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM