位运算

按位异或(^):相同为0,不同为1

  • 可以理解为无进位相加, 满足交换律结合律
  • 0^x = x x^x = 0

按位或运算(|):有1为1

按位与运算(&):同1为1 x & 1 = 1, x 为奇数/判断最低位是否为1

**~**:取反运算

左移:m<<n 表示把m左移n位,最左边的n位将被丢弃,同时在最右边补上n个0

右移:m>>n 表示把m右移n位 m>>1即除以2

x & (-x) 即 x & (~x + 1) 可以获得x的最后一个1

补码:

计算机通常以二进制补码的形式存储整数。最高位是符号位,0 表示正数,1 表示负数,其余位为数字位。

正数补码:即原码。如 +3 的二进制补码为 0011。

负数补码:其原码的所有数字位取反,再加一。如 -3 的补码为1101。