[轉]位元左移運算子 (<<)

將運算式的位元向左移位。
expression1 << expression2

expression1
任何數值運算式。

expression2
任何數值運算式。

<< 運算子使用 expression2 中指定的位元數,將 expression1 的位元向左移。expression1 的資料型別決定本運算子傳回的資料型別。
<< 運算子對 expression2 具有遮罩作用,以避免使 expression1 移位太多。否則,若移位量超過 expression1 資料型別中的位元數,則所有原始位元都會移出,而無法產生一般結果。為了確保每次移位至少都能留下一個原始位元,移位運算子使用以下公式計算實際的移位量:以 expression1 中的位元數減一,做為 expression2 的遮罩 (使用位元 AND 運算子)。

例如:
var temp
temp = 14 << 2
變數 temp 的值為 56,因為 14 (二進位為 00001110) 向左移兩位元就等於 56 (二進位為 00111000)。
若要暸解遮罩的作業方式,請參考以下範例。
var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
var y : byte = x << 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in y are 00111100
// The value of y is 60
print(y); // Prints 60
未經允許不得轉載:GoMCU » [轉]位元左移運算子 (<<)