2019E1_A 位運算

A 位運算

題目

基礎的位運算和二進制相關的知識大家在程序設計課上已經學到,這學期的面向程序設計的硬件基礎也會給大家更深入的講解。這裏就不再贅述,只列舉一下知識點,不熟悉的同學請自行熟悉一下。

  • 邏輯運算符, & , | , ~ , ^ , !
  • 移位 >>,<<
  • 各種類型變量的長度
  • 補碼反碼
  • memset初始化值一般設置爲0 or -1 or 0x3f

練習題

難度:簡單

給出一個小於2322^{32}的正整數a,將其低16位和高16位交換後輸出(用十進制表示的正整數)。

輸入

第一行一個正整數t,表示數據組數 (0<t<100)(0<t<100) 接下來 tt 行,每行一個正整數 a(0<a<232)a(0<a<2^{32})

輸出

tt 行,每行一個正整數

樣例輸入

2
1
1314520

樣例輸出

65536
249036820

樣例解釋

1用二進制表示爲
0000 0000 0000 0000(高16位) 0000 0000 0000 0001(低16位)
交換後,0000 0000 0000 0001 0000 0000 0000 0000 值爲65536

思路

基礎題,注意數據範圍。

代碼

#include <iostream>
using namespace std;

int main(){
    int time;
    cin>>time;
    while (time--){
        unsigned n;
        cin>>n;
        unsigned k=n>>16|n<<16;
        cout<<k<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章