【注】位运算符指的是二进制上的运算
1、左移运算符 <<
左移一位相当于 乘2
//1、 2的平方
int a=1<<2; //相当于1*2*2
//2、 2的三次方
int b=1<<3; //相当于1*2*2*2
//3、其他
int c=2<<2; //相当于2*2*2
//4、其他
int d=5<<3; //相当于 5*2*2*2;
2、右移运算符 >>
右移一位相当于 除以2
int a=16>>2; //相当于16/2/2=4;
3、&(按位与),|(按位或),^(按位亦或)
// 3的二进制==> 0 1 1
// 4的二进制==> 1 0 0
// 3 & 4 0 0 0
//3 | 4 1 1 1
//3 ^ 4 1 1 1
System.out.println(3 & 4); //等于 0
System.out.println(3 | 4);//等于 7
System.out.println(3 ^ 4);//等于 7
雷区:
1、& 和 | 既是逻辑运算符也是位运算符,当两侧操作数都是boolean类型时,做为逻辑运算符;当两侧都是整数类型时,作为算数运算符;
2、不要把 ^ 当成数学运算”乘方“,是”位的异或”操作。