按位運算子
Swift Bitwise 運算子允許你對二進位制數字形式執行操作。你可以通過在數字前加上 0b
來指定二進位制文字,因此例如 0b110
相當於二進位制數 110(十進位制數 6)。每個 1 或 0 都是數字中的一位。
按位不是~
:
var number: UInt8 = 0b01101100
let newNumber = ~number
// newNumber is equal to 0b01101100
在這裡,每個位都改變為相反的位置。將數字明確地宣告為 UInt8
可確保數字為正數(因此我們不必處理示例中的否定資料)並且僅為 8 位。如果 0b01101100
是一個更大的 UInt,則會有前導 0 被轉換為 1 並在反轉時變得顯著:
var number: UInt16 = 0b01101100
// number equals 0b0000000001101100
// the 0s are not significant
let newNumber = ~number
// newNumber equals 0b1111111110010011
// the 1s are now significant
- 0 - > 1
- 1 - > 0
按位和 &
:
var number = 0b0110
let newNumber = number & 0b1010
// newNumber is equal to 0b0010
這裡,當且僅當 &
運算子兩側的二進位制數在該位位置包含 1 時,給定位將為 1。
- 0&0 - > 0
- 0&1 - > 0
- 1&1 - > 1
按位或者|
:
var number = 0b0110
let newNumber = number | 0b1000
// newNumber is equal to 0b1110
這裡,當且僅當|
運算子的至少一側上的二進位制數在該位位置處包含 1 時,給定位將為 1。
- 0 | 0 - > 0
- 0 | 1 - > 1
- 1 | 1 - > 1
按位異或(異或)^
:
var number = 0b0110
let newNumber = number ^ 0b1010
// newNumber is equal to 0b1100
這裡,當且僅當兩個運算元的該位置中的位不同時,給定位將為 1。
- 0 ^ 0 - > 0
- 0 ^ 1 - > 1
- 1 ^ 1 - > 0
對於所有二進位制運算,運算元的順序對結果沒有影響。