1. 是什么
位移运算就是把二进制的每一位整体往左或往右挪:
8 的二进制:1000
8 << 1 → 10000 → 16(后面加个0)
8 >> 1 → 100 → 4(末尾砍掉一位)
就这么简单,没有别的。
2. 规则
左移几位 = 乘以 2 的几次方,右移几位 = 除以 2 的几次方(向下取整)。
公式:
n << k = n × 2^k
n >> k = n / 2^k
举个例子:
5 << 1 // 10 = 5 × 2
5 << 2 // 20 = 5 × 4
5 << 3 // 40 = 5 × 8
40 >> 1 // 20 = 40 / 2
40 >> 2 // 10 = 40 / 4
40 >> 3 // 5 = 40 / 8
3. 符号
<<箭头朝左,左移>>箭头朝右,右移
看着箭头方向就行。
4. 实际用途
最常见的一个——用位移代替乘除:
x * 8 → x << 3
x / 4 → x >> 2
性能上位移比乘除快,但现代编译器基本都会帮你自动优化,所以主要是可读性和语义上的选择,不纯粹是为了快。
总结
- 左移
<<:二进制后面补0,相当于 ×2 - 右移
>>:二进制末尾砍掉,相当于 ÷2 n << k=n × 2^k,n >> k=n / 2^k