运算符问题

XOR - 异或

异或:相同为0,不同为1。也可用二进制的不进位加法来理解。
异或操作的一些特点:
x ^ 0 = x
x ^ 1s =  ~x (1s 是 ~0)
x ^ (~x) = 1s
x ^ x = 0
c = a ^ b => a ^ c = b, b ^ c = a 交换两个数
a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c

指定位置的运算符

  1. 将x最右边的n位清零 : x & (~0 << n)
  2. 获取x的第n位值(0 或 1) : (x >> n) & 1
  3. 获取x的第n位的幂 : x & (1 << n)
  4. 仅将第n位置为1 : x | (1 << n)
  5. 仅将第n位置为0 : x & (~(1 << n))
  6. 将x的最高位至第n位(含)清零 : x & ((1 << n) - 1)

实战位运算要点

  • 判断奇偶
    x % 2 == 1 ——> (x & 1) = 1
    x % 2 == 0 ——> (x & 1) = 0
  • x >> 1 ——> x / 2
    即:x = x / 2 ——> x = x >> 1
  • x = x & (x - 1) : 清零最低位的1
  • x & -x => 得到最低位的1
  • x & ~x = 0
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容