无符号右移赋值运算符 (>>>=)

变量值无符号右移表达式值指定的位数,并将结果赋给该变量。

result >>>= expression

实参

  • result
    任何数值变量。

  • 表达式
    任何数值表达式。

备注

使用此运算符的效果基本上与指定 result = result >>> expression 相同,不同的只是仅计算一次 result

>>>= 运算符将 result 的所有位右移 expression 指定的位数。 用零填充右移后左边空出的位。 右移的位被丢弃。 该操作符屏蔽 expression 以避免将 result 移位太多。 否则,如果移位量超出 result 的数据类型中的位数,则可能会移走所有的初始位,从而会提供无意义的结果。 为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 result 中的位数减一所得的结果来屏蔽 expression(使用按位“与”运算符)。

示例

例如:

var temp
temp = -14
temp >>>= 2

变量 temp 具有初始值 -14(二进制补码 11111111 11111111 11111111 11110010)。 右移两位后,值等于 1073741820(即二进制的 00111111 11111111 11111111 11111100)。

要理解屏蔽的工作方式,请考虑下面的示例。

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

要求

版本 1

请参见

参考

无符号右移运算符 (>>>)

按位左移运算符 (<<)

按位右移运算符 (>>)

赋值运算符 (=)

概念

运算符优先级

运算符摘要

按位运算符强制