swift高階運算子-讀書筆記

ytmaylover發表於2018-09-05

1.高階運算子

  • 位運算子,移位運算子 ,溢位加法運算子,

2.位運演算法

  • 按位 取反 運算子

  • 按位 運算子 &

  • 按位 運算子 |

  • 按位 異或 運算子 ^

  • 按位 左移右移 運算子 <<>>

  • 取反 ~0b00001111 = 0b11110000

    swift高階運算子-讀書筆記

  • 與 0b11111100 & 0b00111111 = 00111100

    swift高階運算子-讀書筆記

  • 或 0b10110010 | 0b01011110 = 11111110

    swift高階運算子-讀書筆記

  • 異或 0b00010100 ^ 0b00000101 = 00010001

    swift高階運算子-讀書筆記

  • 無符號左移右移 邏輯移位

  • 無符號整數的移位運算 對無符號整數進行移位的規則如下:

  • 已經存在的位按指定的位數進行左移和右移

  • 任何因移動而超出整型儲存範圍的位都會被丟棄

  • 用 0 來填充移位後產生的空白位

    swift高階運算子-讀書筆記

  • 顏色值16進位制CC6699 轉為10進位制RGB(204,102,153)

    swift高階運算子-讀書筆記

  • 有符號的按位左移右移運算 算術移位

  • 符號為0為正,1為負

  • 它儲存的值的絕對值等於 2 的 n 次方減去它的實際值(也就是數值位表示的值),這裡的 n 為數值位的位元位數。一個 8 位元位的數有 7 個位元位是數值位,所以是 2 的 7 次方,即 128

    swift高階運算子-讀書筆記

  • 對有符號整數的右移有一個額外的規則

  • 當對整數進行按位右移運算時,遵循與無符號整數相同的規則,但是對於移位產生的空白位使用符號位進行填充,而不是用 0

3.溢位運算子

  • 溢位加法(&+)溢位減法(&-),溢位乘法(&*

  • UInt8.max &+ 1 = 0

    swift高階運算子-讀書筆記

  • UInt8.min &- 1 = 255

    swift高階運算子-讀書筆記

  • 在對有符號整型數值進行溢位加法或溢位減法運算時,符號位也需要參與計算

  • Int8.min &- 1 = 127(-128 - 1 = 127)

    swift高階運算子-讀書筆記

  • 對於無符號與有符號整型數值來說,當出現上溢時,它們會從數值所能容納的最大數變成最小的數。同樣地,當發生下溢時,它們會從所能容納的最小數變成最大的數。

4.運算子函式

  • 類和結構體可以為現有的運算子實現自定義的實現,成為運算子過載

  • 雙目中綴運算子的自定義實現 對加號的過載

    swift高階運算子-讀書筆記

  • 字首和字尾運算子(-A)取反

    swift高階運算子-讀書筆記

  • 複合運算子 (+= )

    swift高階運算子-讀書筆記

  • 等價運算子 (== ,!=)

    swift高階運算子-讀書筆記

5.自定義運算子,自定義優先順序

  • “新的運算子要使用 operator 關鍵字在全域性作用域內進行定義,同時還要指定 prefixinfix或者 postfix 修飾符:

  • +++ 實現,自增的正值

    swift高階運算子-讀書筆記

  • 優先順序

    swift高階運算子-讀書筆記

相關文章