1.8 位运算符
/* 例1.87-1: 位运算符 */
public class Operator05 {
public static void main(String[] args) {
/* 位的与或非运算
A = 0010 1010
B = 1010 1100
---------------
A & B = 0010 1000 // 位与运算, 同为1则为1, 否则则为0
A | B = 1010 1110 // 位(bit)或运算, 有1个是1则为1, 全为0才为0
A^B = 1100 0110 // 位异或运算, 相同为0, 不同为1
~A = 1101 0101 // 位非运算
~B = 0101 0011 // 位非运算
*/
/* 位的左移与右移
a << n : 左移n位, 等同于 a*(2^n)
a >> n : 右移n位, 等同于 a/(2^n)
位运算, 效率极高
*/
// 题01: 如何最快地计算2^4 --> 使用位运算
int a = 2;
System.out.println(a);
System.out.println(a<<3);
System.out.println(Math.pow(a, 4));
// a << 1 = Math.pow(a, 2);
// a << 3 = Math.pow(a, 4);
}
}
1.8.1 属性
位逻辑运算符 | 简要 |
---|---|
~ |
位非操作 |
& |
位与操作 |
` | ` |
位移动运算符 | 简要 |
a << n |
向左移动n位 |
a >> n |
向右移动n位 |