位运算符 运算符 运算 范例 << 左移 >> 右移 >>> 无符号右移 & 与运算 (按位与)
&
![]()
| 或运算 (按位或)
^ 异或运算 (按位异或)
~ 取反运算 (按位取反)
~
位运算符的细节 << 空位补 0 ,被移除的高位丢弃,空缺位补 0 。 >> 被移动的二进制最高位是 0 ,右移后,空缺位补 0 ;最高位是1,空缺位补 1 。 >>> 被移动二进制最高位无论是 0 或者是 1,空缺位都用 0 补 。 & 二进制位进行 & 运算,只有1&1时结果是1,否则是 0 ; 把0当成false,把1当成true | 二进制位进行 | 运算,只有0 | 0 时结果是 0 ,否则是 1 ; 把0当成false,把1当成true ^ 相同二进制位进行^运算,结果是 0 ; 1^1=0, 0^0=0
不相同二进制位^运算结果是 1 。 1^0=1,0^1=1
~ 整数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
- 位运算是直接对整数的二进制进行的运算
- 注意:无<<<
public class BitTest { public static void main(String[] args) { int i = 21; System.out.println(i << 2);//84 System.out.println(i << 3);//168 System.out.println(i << 26);//1409286144 System.out.println(i << 27);//-1476395008 System.out.println("================================="); int j = -21; System.out.println(j << 2);//-84 System.out.println(j << 3);//-168 System.out.println(j << 26);//-1409286144 System.out.println(j << 27);//1476395008 } } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=11465:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception BitTest 84 168 1409286144 -1476395008 ================================= -84 -168 -1409286144 1476395008 Process finished with exit code 0