##位运算
public class Test02{
public static void main(String[] args){
/**
位运算:& | ^ << >> >>>
byte b1 = 27;//0001,1011
byte b2 = 39;//0010,0111
//0000,0011
//同位比较,两者为1,则为1
System.out.println(b1 & b2);//3 - 0000,0000,0000,0000,0000,0000,0000,0011
byte b1 = 27;//0001,1011
byte b2 = 39;//0010,0111
//0011,1111
//同位比较,两者有1,则为1
System.out.println(b1 | b2);//63 - 0000,0000,0000,0000,0000,0000,0011,1111
byte b1 = 27;//0001,1011
byte b2 = 39;//0010,0111
//0011,1100
//同位比较,两者不同,则为1
System.out.println(b1 ^ b2);//60 - 0000,0000,0000,0000,0000,0000,0011,1100
& | ^ :
前后两侧为boolean,此符号为逻辑运算符
前后两侧为整数,此符号为位运算符
<< 左移:整体向左移动n位,就用n个0补位
byte b = 27;//0001,1011
System.out.println(b << 2);//108 -- 0110,1100
>> 右移:整体向右移动n位,就用n个最高位补位
byte b = -27;//1110,0101
//1111,1001
System.out.println(b >> 2);//-7 -- 1111,1001
>>> 无符号位右移:整体向右移动n位,就用n个0补位
byte b = -27;//1110,0101
//0011,1111,1111,1111,1111,1111,1111,1001
System.out.println(b >>> 2);//1073741817
面试题一:
//-1 int(32位):1111,1111,1111,1111,1111,1111,1111,1111
// byte(8位):1111,1111
// char(16位):1111,1111,1111,1111
// int(32位):0000,0000,0000,0000,1111,1111,1111,1111
System.out.println((int)(char)(byte)-1);
面试题二:采用最有效率的方式计算4乘以4
//0001,0000
System.out.println(2<<3);
*/
}
}