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;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
A << 2 = 11110000
A >> 2 = 1111