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