今天看到一条这样的面试题:请写出快速运算2*11等于多少?(其实就是考位运算符的熟练度了,好久没用的这个会挂掉,所以来写写吧,虽然基础可正所谓千里之行始于足下)
System.out.println(11<<1);//means 11 multiply 2=22;
但一开始不记得题目,一开始写的是快速计算出结果是11的方法,发现位运算符不能用于double类型,不然我这么写不更简短直接快速么,我一开始是写的这句,验证后发现会编译不通过,eclipse会提示说<<不能用于double只能用于int:
System.out.println(5.5<<1);//编译不通过,至于深度的原因日后有空可以去百度深度点的知识来思考
所以写成这样就行:System.out.println((5<<1)+1);//result:11
最后,复习一下:
java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐