洛谷-P1100 高低位交換
阿新 • • 發佈:2020-12-27
洛谷-P1100 高低位交換
題目描述
給出一個小於\(2^{32}\)的正整數。這個數可以用一個\(32\)位的二進位制數表示(不足\(32\)位用\(0\)補足)。我們稱這個二進位制數的前\(16\)位為“高位”,後\(16\)位為“低位”。將它的高低位交換,我們可以得到一個新的數。試問這個新的數是多少(用十進位制表示)。
例如,數\(1314520\)用二進位制表示為\(0000 0000 0001 0100 0000 1110 1101 1000\)(添加了\(11\)個前導\(0\)補足為\(32\)
輸入格式
一個小於\(2^{32}\)的正整數
輸出格式
將新的數輸出
輸入輸出樣例
輸入 #1
1314520
輸出 #1
249036820
C++程式碼
#include <iostream> #include <cmath> using namespace std; int a[35]; int main() { long long n, m=0; cin >> n; for (int i=32; i>0&&n!=0; --i) { a[i] = n % 2; n /= 2; } for (int i=16; i>0; --i) m += a[i] * pow(2, 16-i); for (int i=32; i>16; --i) m += a[i] * pow(2, 48-i); cout << m << endl; return 0; }