位运算符
1、位运算符操作的都是整形的数据
2、 << :在一定范围内,每向左移一位,相当于 * 2 ;
>> :在一定范围内,每向右移一位,相当于 / 2;
经典例题1:你能否写出最高效的 2 * 8的实现方式?
答案: 2 << 3 或 8 << 1
经典例题2:以下代码的执行结果
public class Test1{
public static void main(String[] args) {
int a = 8, b = 3;
System.out.println(a>>>b);
System.out.println(a>>>b | 2);
}
}
答案:
1
3
补充:
位运算符跟其他运算符一样,在进行计算时,会先向上转型为int类型再进行位运算。
例:
byte b1 = 12;
byte b2 = 33;
//错误代码
byte result = b1 & b2;//编译会出错,因为b1、b2会向上转型为int类型再进行计算,所以此处需要强转
//正确代码
byte result = (byte)(b1 & b2);