1、移位运算符:
左移与右移:运算速度快于乘除法。
int a = 14;
int b = a<<3; // 左移三位,相当于a = a*2^3;
a >>= 3; // 右移三位,相当于a = a/2^3;
2、按位运算符:
按位取反~
:
unsigned char x = 3; // 0000 0011
unsigned char y = ~x; // 1111 1100
按位或OR|
:至少一个为1,则都为1.
int a = 1;
int b = 2;
int c = a|b;
int a |= b;
按位异或XOR^
:相同为0,不同为1
int a = 1;
int b = 2;
int c = a^b;
int a ^= b;
按位与AND&
:都为1则1,其余为0
int a = 1;
int b = 2;
int c = a&b;
int a &= b;
3、常见应用:打开关闭硬件特定位
打开位:
char bitdata = 125;
char bit; //bit为2^n,n为要设置的位
bitdata =bitdata | bit;
bitdata |= bit;
关闭位:
bitdata =bitdata & ~bit;
bitdata &= ~bit;
切换位:
bitdata =bitdata ^ bit;
bitdata ^= bit;
测试位的值:
if(bitdata & bit == bit ) { //为1 }
if(bitdata & bit) { //为1
4、逻辑运算符:
与:&&;或:||;非:!
参考资料:C++ Primer Plus 附录 E.1.4