16.位运算

16.位运算

  • 位运算符
  • 算数移位与逻辑移位
  • 位运算的应用

为什么需要位运算

  • 机器里的数字表示方式和储存格式就是二进制
  • 十进制<->二进制如何转换? 各种进制转换

位运算符

含义 运算符 示例
左移 « 0011 => 0110
右移 » 0110 => 0011
按位或 | 0011 | 1011 = 1011
按位与 & 0011 & 1011 = 0011
按位取反 ~ 0011 => 1100
按位异或(相同为0不同为1) ^ 0011 ^ 1011 = 1000

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 // associative

指定位置的位运算

实战位运算要点