C语言:位运算符
异或 ^ 两个二进制位相同结果为0;不相同结果为1
1^1=0 1^0=1 0^1=1 0^0=1
按位或 | 两个二进制位至少有一个1,结果为1;否则为0(两个二制位都是0结果为0)
1|1=1 1|0=1 0|1=1 0|0=0
按位与 & 两个二进制位都是1结果为1;否则为0
1&1=1 1&0=0 0&1=0 0&0=0
按位反 ~ 0变1 1变0
~1=0 ~0=1
左移 << 丢弃最高位,0补最低位(右边补0)
5<<2(5向左移2位)
分析:0000 0101变为 0001 0100
5 20=5*4=5*2^2
5<<2结果为20
右移 >>丢弃最低位 ,0补最高位(左边补0)
5>>2 (5向右移2位)
分析:0000 0101 变为 0000 0001
5 1
所以5>>2结果为1