java位移运算符|And&,操作二进制
在java中 逻辑运算符有四种:& , |, &&, ||
&: 如果第一个条件是fasle,还会判断第二个条件,只要有一个条件不满足,结果就返回false;
&&:如果第一个条件就不满足,则直接返回false,不会去判断第二个条件;
|和||跟上面是一样的意思
Java中基本类型:
int数据类型:byte(8bit ,-128~127) short(16 bit) int(32 bit) long(64 bit)
float数据类型: 单精度(32 bit float)、双精度(64 bit double)
boolean类型: true false
char数据类型:unicode字符(16位)
对应的类类型:
Integer、Float、Boolean、Character、Double、Short、Byte、Long
二进制数据如果第一位是1,则是负数;第一位是0,则是正数
举个例子(-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