续位值运算---左移、右移
一、左移(<<)
简单来讲,二进制左移几位就在后面加几个0,同时前面去掉相同的位数
eg. 40 << 2
0010 1000
1010 0000 也相当于扩大4倍
二、右移(>>)
简单来讲,二进制右移几位就在前面加几个0或1,(负数加1,正数加0),同时后面去掉相同的位数
eg. 40 >> 2
0010 1000
0000 1010 也相当于缩小4倍
例题、洛谷P1100
在这里进行高低位转换,思路则是将此数右移16位加上此数左移16位
#include <stdio.h>
#include <stdlib.h>int main()
{unsigned int n; //无符号标注scanf("%u", &n);printf("%u\n",(n>>16)+(n<<16)); //位运算实现return 0;
}