位运算

按位与

  • 符号:&
  • 逻辑:
  • 1&1=1
  • 1&0=0
  • 0&1=0
  • 0&0=0
  • tip:
  • (n&1)等价于(n%2)并且更快速;

按位或

  • 符号:|
  • 逻辑:
  • 1|1=1
  • 1|0=1
  • 0|1=1
  • 0|0=0

按位异或

  • 符号:^
  • 逻辑:
  • 1^1=0
  • 1^0=1
  • 0^1=1
  • 0^0=0
  • 有趣的公式:
  • a^0=a
  • a^a=0
  • a^b^b=a
  • a^b^c=a^c^b
  • 有趣的性质:
  • 按位异或的逆运算是它本身
  • 有趣的交换a,b技巧:
 a=a^b;
 b=a^b;
 a=a^b;

按位取反

  • 符号:~
  • 逻辑:
  • ~1=0
  • ~0=1
  • tip:
  • 取反连同符号位一起取反,signed 需特殊处理

左移右移

符号:

  • 左移:<<
  • 右移:>>

逻辑(二进制):

  • 左移:
  • 1<<1=10
  • 1<<2=100
  • 右移:
  • 10>>1=1
  • 101>>2=1
  • tip:
  • <<等价于*2
  • >>等价于/2(整型)

tip:位运算由于绝大多数运算