概述

  • 计算机底层二进制存储的,用位运算一般会比加减乘除之类的快一些。

    位运算符

    >>

  • 右移

  • 相当于除2

    <<

  • 左移

  • 相当于乘2(但是要注意超限)

    |

  • 按位或

  • 两个数的每个位上,有任意一个为1,就取1。否则取0。

    &

  • 按位与

  • 两个数的每个位上,两个都为1的,才取1。否则取0。

    ~

  • 按位取反

  • 一个数的每个位上,0和1都取反。

    ^

  • 按位异或

  • 两个数的每个位上,0和1不同的取1,两个都是1或两个都是0的,取0。

常见应用

判断奇偶

  • X & 1 == 1为奇数。
  • X & 1 == 0为偶数。

    乘2、除2

  • X >> 1表示除2。

  • X << 1表示乘2。(注意超限)

    清理掉二进制的最后一个1

  • X & (X - 1)