变量值右移表达式值指定的位数,保持符号不变,并将结果赋给该变量。
result >>= expression
- result
任何数值变量。
- 表达式
任何数值表达式。
使用此运算符的效果基本上与指定 result = result >> expression 相同,不同的只是仅计算一次 result。
>>= 运算符将 result 的所有位右移 expression 指定的位数。用 result 的符号位填充右移后左边空出的位。右移的位被丢弃。该操作符屏蔽 expression 以避免将 result 移位太多。否则,如果移位量超出 result 的数据类型中的位数,则可能会移走所有的初始位,从而会提供无意义的结果。为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 result 中的位数减一所得的结果来屏蔽 expression(使用按位“与”运算符)。
示例例如,计算完下列代码后,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要求请参见
参考
按位左移运算符 (<<)按位右移运算符 (>>)
无符号右移运算符 (>>>)
赋值运算符 (=)
概念
运算符优先级运算符摘要
按位运算符强制