[轉]右移指派運算子 (>>=)

利用運算式值中所指定的位元數來將變數值進行向右移位,保持正負號不變,然後將結果指派給變數。
result >>= expression

result
任意數值變數。

expression
任何數值運算式。

使用本運算子的方式幾乎與指定 result = result >> expression 相同,但 result 只會評估一次。
>>= 運算子利用 expression 中所指定的位元數來將 result 的位元向右移位。result 的正負號位元是用來填滿左邊的數字。移出右邊界的數字會被捨棄。運算子對expression 會產生遮罩,以避免 result 移位太多。否則,如果移位量超過 result 資料型別中的位元數,則所有原始位元都會移出而無法產生一般結果。為了確保每個移位至少都能留下一個原始位元,移位運算子使用以下公式來計算實際的移位量:以 result 中的位元數減一來做為 expression 的遮罩 (使用位元 AND 運算子)。

例如,在評估以下程式碼之後,temp 的值為 -4。14 (二進位為 11110010) 向右移兩位元就等於 -4 (二進位為 11111100)。
var temp
temp = -14
temp >>= 2
若要暸解遮罩的作業方式,請參考以下範例。
var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
x >>= 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in x are 00000011
// The value of x is 3
print(x); // Prints 3
未經允許不得轉載:GoMCU » [轉]右移指派運算子 (>>=)