What

从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、、/)都是叫位运算,即将符号位共同参与运算的运算。相比在代码中直接使用(+、-、、/)运算符,合理的运用位运算更能显著提高代码在机器上的执行效率。

Java位运算符应用于整数类型(int)、长整型(long)、短整型(short)、字符型(char)和字节型(byte)等类型。

How

符号 描述 运算规则
& 两个位都为1时,结果才为1,否则为0
| 两个位都为0时,结果才为0,否则为1
^ 异或 两个位相同为0,相异为1
~ 取反 0变1,1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>> 有符右移 各二进位全部右移若干位,高位正数补0,负数补1,低位丢弃
>>> 无符右移 无符号右移与带符号右移的区别就是 无符号始终补0

示例

位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:

  1. A = 0011 1100
  2. B = 0000 1101
  3. -----------------
  4. A&B = 0000 1100
  5. A | B = 0011 1101
  6. A ^ B = 0011 0001
  7. ~A= 1100 0011
  8. A << 2 = 11110000
  9. A >> 2 = 1111