&(与)

运算规则:

  1. 0&0 = 0 类似于 false&false = false
  2. 0&1 = 0 类似于 false&true = false
  3. 1&0 = 0 类似于 true&false = false
  4. 1&1 = 1 类似于 true&true = true

总结:1&1 = 1,其他都是 0 ,有0则0

用途:
1)清零
如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
2)判断奇偶
只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。
3)取一个数的指定位
取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。

|(或)

运算规则:

  1. 0|0 = 0 类似于 false|false = false
  2. 0|1 = 1 类似于 false|true = true
  3. 1|0 = 1 类似于 true|false = true
  4. 1|1 = 1 类似于 true|true = true

总结:0|0 = 0 ,其他都是1,有1则1

用途:
1)取一个数的指定位
将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。

^(异或)

运算规则:

  1. 0^0 = 0
  2. 0^1 = 1
  3. 1^0 = 1
  4. 1^1 = 0

总结:相同为0,不同为1

~(取反)

定义:参加运算的一个数据,按二进制进行”取反”运算。
运算规则:

  1. ~1=0
  2. ~0=1

总结:对一个二进制数按位取反,即将0变1,1变0。

<<(左移)

定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

>>(右移)

定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
操作数每右移一位,相当于该数除以2。