版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
A 位运算
题目
基础的位运算和二进制相关的知识大家在程序设计课上已经学到,这学期的面向程序设计的硬件基础也会给大家更深入的讲解。这里就不再赘述,只列举一下知识点,不熟悉的同学请自行熟悉一下。
- 逻辑运算符, & , | , ~ , ^ , !
- 移位 >>,<<
- 各种类型变量的长度
- 补码反码
- memset初始化值一般设置为0 or -1 or 0x3f
练习题
难度:简单
给出一个小于 的正整数a,将其低16位和高16位交换后输出(用十进制表示的正整数)。
输入
第一行一个正整数t,表示数据组数 接下来 行,每行一个正整数
输出
行,每行一个正整数
样例输入
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;
}