接触java有三年了,工作也快半年了,今天在写代码的时候碰到了java的位移运算符,于是又重新好好学习了一遍。
“>”,“>>”,“>>>”这三个运算符当中后面的两个可能很多人都不是特别明白,一般的开发中也用的比较少。
“>”不用说,就是大于的意思。
“<<”代表左移,
例如:3 << 1代表 3 左移1位,在移位的时候要换成2进制,
3的二进制是:0000 0011, 左移一位之后的二进制就是 0000 0110,0000 0110换成十进制就是6.
(移动之后末尾用0来补,左移几位加几个0)
所以3<<1 = 6;
同理“>>”代表右移,
例如 13>>2.
13的二进制是0000 1101,右移二位的结果是0000 0011,0000 0011的十进制结果是3,
所以13>>2的结果就是3
“>>>”
j>>>i的运算结果和 j / (int) (Math.pow(2, i))的运算结果是相同的,
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 100; j = j + 5) {
System.out.println(j / (int) (Math.pow(2, i)));
System.out.println(j >>> i);
}
}
Math.pow(a,b)这个函数的两个参数是double类型,表示a的b次方。
例如Math.pow(3.0,2.0)的值是9.0