位运算符 <<
左位移 x<<n,表示把x的每一位向左平移n位,右边空位补0
位运算符 >>
右位移 x>>n,表示把x的每一位向右平移n位
1.当x为无符号数时,左边空位补0,称之为逻辑位移
、
2.当x为有符号数时,左边空位补最高位数值,为算数移位
代码:
int main(void)
{
volatile int8_t a = 0x8F;
volatile uint8_t b = 0x8F;
a >>= 2;
b >>= 2;
return 0;
}
结果:
应用案例
给定一个变量a,不改变其他位的值。只将第六位变成1
0x0F--->0x4F
思路
构造一个操作数 与运算 0X40
如何快速获得0X40,它对应的第六位为1
将0X01 左移六位
a|=(0x01<<6)
给定一个变量a,不改变其他位的值。只将第2位变成0
通过或运算 0X0F-->0X0B
a &= 0xFB
快速获得0XFB 将0x04进行取反
最后得到算式 a&=~0x04
再进一步,如何获得0x04也就是将第二位为1;
a&= ~(1<<2);