位运算符
1、&:与运算符
二进制比较,都为1则为1,否则为0
0=非=false,1=是=true
& 类比 &&,当&&的所有条件都满足是才为true,故推到出上述结果。
2、|:或运算符
二进制比较,只要有一个为1就是1,否则为0
与&类似,| 类比 ||。
3、~:非运算符
二进制结果倒置,为0则1,1则0;
类比!
4、^:异或运算符
二进制比较,相同为0,不同为1
类比!=
5、<<:左移运算符
二进制,左移位数,低位补0;相当于10进制里,乘以2的几次方。
6、>>:右移运算符
二进制,右移位数;相当于10进制里,除以2的几次方。
值为正,高位补0;值为负,高位补1。
7、>>>:右移运算符
二进制,右移位数,无论正负高位都补0
1 public static void main(String[] args) throws InterruptedException { 2 // 11 1110 0111 3 System.out.println(Integer.toBinaryString(999)); 4 // 1111 1111 1111 1111 1111 1100 0001 1001 5 System.out.println(Integer.toBinaryString(-999)); 6 // 00 0001 1111 7 System.out.println(Integer.toBinaryString(999 >>> 5)); 8 // 1111 1111 1111 1111 1111 1111 1110 0000 9 System.out.println(Integer.toBinaryString(-999 >>> 5)); 10 // 1 1111 0011 1000 0000 11 System.out.println(Integer.toBinaryString(999 << 7)); 12 // 1111 1111 1111 1110 0000 1100 1000 0000 13 System.out.println(Integer.toBinaryString(-999 << 7)); 14 // 0 0011 1110 0111 15 System.out.println(Integer.toBinaryString(999 >> 3)); 16 // 1111 1111 1111 1111 1111 1111 1000 0011 17 System.out.println(Integer.toBinaryString(-999 >> 3)); 18 }