位移运算符

想象一个数字:5的二进制

  • 十进制:5
  • 二进制00000101(为了直观,我们用8位表示)

1. 左移(<<)

规则:所有数字往左挤,右边空出来的位补0。
口诀:左移1位 = 乘以2,左移2位 = 乘以4,以此类推。

例子

  • 5 << 1
    00000101 → 往左挤1位 → 00001010(结果是10,即5×2=10)
  • 5 << 2
    00000101 → 往左挤2位 → 00010100(结果是20,即5×4=20)

动图想象
[5] → [5 0] → [5 0 0](每次左移相当于在右边加一个0)


2. 右移(>>)

规则:所有数字往右挤,左边空出来的位补原来的符号位(正数补0,负数补1)。
口诀:右移1位 = 除以2并向下取整。

例子

  • 正数20 >> 2
    00010100 → 往右挤2位 → 00000101(结果是5,即20÷4=5)
  • 负数-8 >> 2
    -8的二进制是11111000(补码表示)→ 往右挤2位 → 11111110(结果是-2,即-8÷4=-2)

3. 无符号右移(>>>):强行补0

规则:无论正数负数,左边统统补0。
结果:负数会变成正数!

例子

  • -8 >>> 2
    -8的二进制是11111000 → 往右挤2位并补0 → 00111110(结果变成62!符号位被0覆盖了)

一句话总结

  • <<:左移乘2,右边补0。
  • >>:右移除2,负数补1,正数补0。
  • >>>:右移除2,统统补0(Java专属)。

现在试试?

如果x = 3,那么:

  • x << 2 = 12(3×4)
  • x >> 1 = 1(3÷2向下取整)

试试看对不对?

posted @ 2025-07-21 16:38  有一个果园  阅读(49)  评论(0)    收藏  举报