>>号运算 如:>>1 相当于除以2的一次方
<<号运算 与>>1 相当于乘以2的一次方
>>>号运算 比如53二进制为110101>>>3得到110类似删除后面三位一样
int i = 64;
System.out.println(i);
System.out.println(Integer.toBinaryString(i));
i = i>>3;
System.out.println(i);
System.out.println(Integer.toBinaryString(i));
i = i<<2;
System.out.println(i);
System.out.println(Integer.toBinaryString(i));
i = 53;
System.out.println(Integer.toBinaryString(i));
i = i>>>3;
System.out.println(i);
System.out.println(Integer.toBinaryString(i));
结果
64
1000000
8
1000
32
100000
110101
6
110
&运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。
|运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。
^运算规则:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
^运算规则:如果位为0,结果是1,如果位为1,结果是0.
int i = 0b111;
int k = 0b1;
System.out.println(Integer.toBinaryString(i&k));
System.out.println(Integer.toBinaryString(i|k));
System.out.println(Integer.toBinaryString(i^k));
k = ~k;
System.out.println(k);
System.out.println(Integer.toBinaryString(k));
结果
1
111
110
-2
11111111111111111111111111111110