codevs 高低位交換 5641

題目描述 Description
給出一個小於longint範圍的正整數。這個數可以用一個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 Description

一個小於longword範圍的正整數

輸出描述 Output Description
將新的數輸出


樣例輸入 Sample Input

1


樣例輸出 Sample Output

65536


位運算


代碼:

   var
  n,m:longint;
begin
  readln(n);
  writeln(swap(n) and (1 shl 32-1));
end.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章