^ 异或 | 相同为0,相异为1 |
& 与 | 全1为1,有0为0 |
| 或 | 全0为0,有1为1 |
<< | 左移,补0 |
>> | 右移,符号位为0补0,符号位为1补1 |
>>> | 无符号右移,补0 |
~ 非 | 逐位取反 |
注意:
1、负数参与的运算得到的是补码,需要补码减1,然后按位取反得到原码。
2、对int值移动负数位,java会截取那个负数的低5位来计算。
对于二进制操作,我们知道,除以一个 2,
来的数字将会减少一个 0。如果除的过程中有余,那么就表示当前位置有一个 1。
以 10 100 010 为例;
第一次除以 2 时,商为1 010 001,余为 0。
第二次除以 2 时,商为101 000,余为 1。