二进制与位运算的基本操作

1. 按位与 &

概念:两个整数的二进制位,对位都为1,该位为1,否则为0

举例:12 & 13
12 转为二进制为 1100
13 转为二进制为 1101
按位与的结果为 1100 => 12

2. 按位或 |

概念:两个整数的二进制位,对位只要有一个为1,该位为1,否则为0

举例:12 & 13
12 转为二进制为 1100
13 转为二进制为 1101
按位或的结果为 1101 => 13

3. 按位异或 ^

概念:两个整数的二进制位,对位只能有一个为1,该位为1,否则为0

举例:12 & 13
12 转为二进制为 1100
13 转为二进制为 1101
按位异或的结果为 0001 => 1

4. 按位非 ~

概念:对整数的所有二进制位取反

举例:12
12 转为二进制为 1100
按位非的结果为 0011 => 3

5. 按位左移 <<

概念:整数的二进制位整体左移一位,最后的空缺位置补0,移动一位相当于乘一次2

举例:12
12 转为二进制为 1100
12 << 1 的结果为 11000 => 24

6. 按位右移 >>

概念:整数的二进制位整体右移一位,左边空缺位补 0 或 1 取决于原运算数的符号位。如果运算数是正的,运算结果最高位补 0;如果运算数是负的,运算结果最高位补 1。
特点:由于最后一位会直接抛弃掉,所以不管是1还是0,都会向下取整,所以 13 >> 1 相当于 Math.floor(13 / 2)

举例:13
13 转为二进制为 1101
13 >> 1 的结果为 0110 => 6

你可能感兴趣的:(位运算)