位运算符

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 }

posted @ 2020-07-09 17:40  被猪附身的人  阅读(167)  评论(0编辑  收藏  举报