java位移运算符|And&,操作二进制
在java中 逻辑运算符有四种:& , |, &&, ||
&: 如果第一个条件是fasle,还会判断第二个条件,只要有一个条件不满足,结果就返回false;
&&:如果第一个条件就不满足,则直接返回false,不会去判断第二个条件;
|和||跟上面是一样的意思
举个例子(-1和255)00000001
-1转换成二进制(byte类型):11111111
1转换成二进制(int类型):00000000-00000000-00000000-00000001
转换成二进制要先取反,然后+1,(11111111-11111111-11111111-11111111)
如果把负数的二进制转换成十进制数据:首先要-1,然后取反 -(00000000-00000000-00000000-00000001),结果就是-1;
255转换成二进制(int类型):00000000-00000000-00000000-11111111
正数的二进制转换成十进制则不用取反:1*(2*1)+1*(2*2)+1*(2*2*2)....... = 255;
System.out.println("a>>b = "+3>>1);
System.out.println("a<<b = "+3<<1);
System.out.println("a&b = "+3&1);
System.out.println("a|b = "+3|1);
System.out.println("a^b = "+a^b);
a = 0011
b = 0001
a = 3
b = 1
运行结果是:
a>>b = 1 :0001
a<<b = 6 :0111
a & b = 1 :0001
a | b = 3 :0011
a ^ b = 2 :0010