位运算符
位运算符
<< >> >>> & | ^ ~
class BitTest {
public static void main(String[] args) {
int i = 21;
System.out.println("i << 2 : " + (i << 2));//84
System.out.println("i << 26 : " + (i << 26));
System.out.println("i << 27 : " + (i << 27));
System.out.println("i >> 2 : " + (i >> 2));
int j = -21;
System.out.println("j >> 2 : " + (j >> 2));
System.out.println("j >>> 2 : " + (j >>> 2));//无符号右移。高位拿0补
}
}
特别说明
- 小技巧:m = (m ^ n) ^ n
//交换两个数的值
class Test{
public static void main(String [] args){
int m = 2;
int n = 3;
m = m ^ n;
n = m ^ n;
m = m ^ n;
System.out.println(m + "\t" + n);
}
}
-
左移 : 在一定范围内,每向左移动一位,相当于 * 2 :过犹不及、物极必反
-
右移: 在一定范围内,每向右移动一位,相当于 / 2
面试题:
最高效的计算 2 * 8
- 右移: 在一定范围内,每向右移动一位,相当于 / 2
面试题:
最高效的计算 2 * 8
2 << 3 或 8 << 1