左移表达式的位。
expression1 << expression2
- expression1
任何数值表达式。
- expression2
任何数值表达式。
<< 运算符将 expression1 的所有位左移 expression2 指定的位数。expression1 的数据类型决定此运算符所返回的数据类型。
<< 运算符屏蔽 expression2 以免 expression1 的移位量太大。否则,如果移位量超出 expression1 的数据类型中的位数,则可能移走所有的初始位,从而会提供无意义的结果。为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 expression1 中的位数减一所得的结果来屏蔽 expression2(使用按位“与”运算符)。
示例例如:
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要求请参见
参考
左移赋值运算符 (<<=)按位右移运算符 (>>)
无符号右移运算符 (>>>)
概念
运算符优先级运算符摘要
按位运算符强制