按位運算子

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

對於所有二進位制運算,運算元的順序對結果沒有影響。