按位或操作符( & )

参与运算的两个运算量,按二进制位进行操作运算,对应位同时为1时,则该位结果为1,否则为0

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
35 & 45 = 33

 0000 0000 0000 0000  0000 0000 0010 0011    //35
 0000 0000 0000 0000  0000 0000 0010 1101    //45
------------------------------------------
 0000 0000 0000 0000  0000 0000 0010 0001    //33

按位与运算符( | )

参与运算的两个运算量,按二进制位进行操作运算,对应位中其一值为1时,则该位结果为1,否则为0

0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
35 | 45 = 47

 0000 0000 0000 0000  0000 0000 0010 0011    //35
 0000 0000 0000 0000  0000 0000 0010 1101    //45
------------------------------------------
 0000 0000 0000 0000  0000 0000 0010 1111    //47

按位异或操作符( ^ )

参与运算的两个运算量,按二进制位进行操作运算,对应位相同时,则该位结果为0,否则为1

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
35 ^ 45 = 14

 0000 0000 0000 0000  0000 0000 0010 0011    //35
 0000 0000 0000 0000  0000 0000 0010 1101    //45
------------------------------------------
 0000 0000 0000 0000  0000 0000 0000 1110    //14

按位取反操作符( ~ )

单目运算符,按二进制位进行取反操作运算

~96 = -97

 0000 0000 0000 0000  0000 0000 0110 0000    //96
------------------------------------------
 1111 1111 1111 1111  1111 1111 1001 1111    //-97

左移运算符( << )

将一个运算量的二进制位左移若干位,右侧补0

15 << 2 = 60

 0000 0000 0000 0000  0000 0000 0000 1111    //15
------------------------------------------ 
 0000 0000 0000 0000  0000 0000 0011 1100    //60

右移运算符( >> )

将一个运算量的二进制位右移若干位,左侧补0,超出的值侧丢弃

38 >> 2 = 9

 0000 0000 0000 0000  0000 0000 0010 0110    //38
------------------------------------------
 0000 0000 0000 0000  0000 0000 0000 1001    //9

无符号右移运算符( >>> )

对无符号运算量进行运算时,计算结果与右移运算符的相同,而对于负值进行计算时结果会非常之大。

  • 无符号时,和右移运算符的运算结果相同
55 >> 3 = 6
55 >>> 3 = 6
 
 0000 0000 0000 0000  0000 0000 0011 0111    //55
------------------------------------------
 0000 0000 0000 0000  0000 0000 0000 0110    // 6
  • 负值时
-55 >> 3 = -7

 1111 1111 1111 1111  1111 1111 1100 1001    //-55
------------------------------------------
 1111 1111 1111 1111  1111 1111 1111 1001    // -7
-55 >>> 3 = 536870905

 1111 1111 1111 1111  1111 1111 1100 1001    //-55
------------------------------------------
 0001 1111 1111 1111  1111 1111 1111 1001    // 536870905