左移赋值运算符 (<<=)
变量值根据表达式值指定的位数左移,并将结果赋给该变量。
result <<= expression
参数
result
任何数值变量。表达式
任何数值表达式。
备注
使用此运算符的效果基本上与指定 result = result << expression 相同,不同的只是仅计算一次 result。
<<= 运算符将结果 的所有位左移表达式 所指定的位数。 该操作符屏蔽 expression 以避免将 result 移位太多。 否则,如果移位量超出 result 的数据类型中的位数,则可能会移走所有的初始位,从而会提供无意义的结果。 为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 result 中的位数减一所得的结果来屏蔽 expression(使用按位“与”运算符)。
示例
例如:
var temp
temp = 14
temp <<= 2
变量 temp 的值为 56,因为 14(即二进制的 00001110)左移两位等于 56(即二进制的 00111000)。 移动时用零填充右边空出的位。
要理解屏蔽的工作方式,请考虑下面的示例。
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 00111100
// The value of x is 60
print(x); // Prints 60