1.高階運算子
- 位運算子,移位運算子 ,溢位加法運算子,
2.位運演算法
-
按位
取反
運算子~
-
按位
與
運算子&
-
按位
或
運算子|
-
按位
異或
運算子^
-
按位
左移
,右移
運算子<<
和>>
-
取反 ~0b00001111 = 0b11110000
-
與 0b11111100 & 0b00111111 = 00111100
-
或 0b10110010 | 0b01011110 = 11111110
-
異或 0b00010100 ^ 0b00000101 = 00010001
-
無符號左移右移 邏輯移位
-
無符號整數的移位運算 對無符號整數進行移位的規則如下:
-
已經存在的位按指定的位數進行左移和右移
-
任何因移動而超出整型儲存範圍的位都會被丟棄
-
用 0 來填充移位後產生的空白位
-
顏色值16進位制CC6699 轉為10進位制RGB(204,102,153)
-
有符號的按位左移右移運算 算術移位
-
符號為0為正,1為負
-
它儲存的值的絕對值等於 2 的 n 次方減去它的實際值(也就是數值位表示的值),這裡的 n 為數值位的位元位數。一個 8 位元位的數有 7 個位元位是數值位,所以是 2 的 7 次方,即 128
-
對有符號整數的右移有一個額外的規則
-
當對整數進行按位右移運算時,遵循與無符號整數相同的規則,但是對於移位產生的空白位使用符號位進行填充,而不是用 0
3.溢位運算子
-
溢位加法(
&+
)溢位減法(&-
),溢位乘法(&*
) -
UInt8.max &+ 1 = 0
-
UInt8.min &- 1 = 255
-
在對有符號整型數值進行溢位加法或溢位減法運算時,符號位也需要參與計算
-
Int8.min &- 1 = 127(-128 - 1 = 127)
-
對於無符號與有符號整型數值來說,當出現上溢時,它們會從數值所能容納的最大數變成最小的數。同樣地,當發生下溢時,它們會從所能容納的最小數變成最大的數。
4.運算子函式
-
類和結構體可以為現有的運算子實現自定義的實現,成為運算子過載
-
雙目中綴運算子的自定義實現 對加號的過載
-
字首和字尾運算子(-A)取反
-
複合運算子 (+= )
-
等價運算子 (== ,!=)
5.自定義運算子,自定義優先順序
-
“新的運算子要使用
operator
關鍵字在全域性作用域內進行定義,同時還要指定prefix
、infix
或者postfix
修飾符: -
+++ 實現,自增的正值
-
優先順序