位元運算子 直接對二進位表示進行運算,不產生溢位。適用於整數型別或可隱含轉換為整數的型別。
& 位元 AND| 位元 OR^ 位元 XOR(異或)~ 取補(一元)<< 左移>> 右移| 運算 | 0&0 | 0&1 | 1&0 | 1&1 |
|---|---|---|---|---|
& AND | 0 | 0 | 0 | 1 |
| OR | 0 | 1 | 1 | 1 |
^ XOR | 0 | 1 | 1 | 0 |
記憶口訣:AND 全 1 才 1;OR 全 0 才 0;XOR 相同 0、不同 1。
2 & 10 = 20000 0010 & 0000 1010 = 0000 0010 → 2
2 | 10 = 100000 0010 | 0000 1010 = 0000 1010 → 10
2 ^ 10 = 80000 0010 ^ 0000 1010 = 0000 1000 → 8
flags |= Flag.Read、if ((flags & Flag.Write) != 0)x << n ≈ x * 2^n、x >> n ≈ x / 2^n。a ^= b; b ^= a; a ^= b;(教學用,實務較難讀)。