# 什么是位运算符
直接对整数的二进制位进行操作的运算方式
它不是从“数值”的角度去计算,而是从“每一位是0还是1”的角度去处理
# 按位与(&)
两个位都为1时结果才为1
- 1&1=1
- 1&0=0
- 0&1=0
- 0&0=0
# 按位或(|)
两个位有任意位为1结果才为1
- 1|1=1
- 1|0=1
- 0|1=1
- 0|0=0
# 按位异或(^)
两个位不同时结果为1
- 1^1=0
- 1^0=1
- 0^1=1
- 0^|0=0
# 按位取反(~)
将每个位取反(0变1,1变0)
~1 = 0
~0 = 1
# 左移(<<)
向左移动n位,相当于乘以2ⁿ
4 << 3
4的二进制表示0100
左移3位,变成100000,代表10进制的32
即 4×2³ = 4×8=32
# 右移(>>)
向右移动n位,相当于除以2ⁿ(取整)
100 << 3
100的二进制01100100
右移2位,变成1100,代表10进制的12
即100 ÷ 2³ = 100 ÷ 8 = 12余4,取整,得12