按位右移运算符 (>>)

右移表达式的位,保持符号不变。

expression1 >> expression2

实参

  • expression1
    任何数值表达式。

  • expression2
    任何数值表达式。

备注

>> 运算符将 expression1 的所有位右移 expression2 指定的位数。 用 expression1 的符号位填充右移后左边空出来的位。 右移的位被丢弃。 expression1 的数据类型决定此运算符所返回的数据类型。

>> 运算符屏蔽 expression2 以免 expression1 的移位量太大。 否则,如果移位量超出 expression1 的数据类型中的位数,则可能移走所有的初始位,从而会提供无意义的结果。 为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 expression1 中的位数减一所得的结果来屏蔽 expression2(使用按位“与”运算符)。

示例

例如,计算完下列代码后,temp 的值为 -4:因为 -14(即二进制的 11110010)右移两位后等于 -4(即二进制的 11111100)。

var temp
temp = -14 >> 2

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

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 00000011
// The value of y is 3
print(y); // Prints 3

要求

版本 1

请参见

参考

按位左移运算符 (<<)

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

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

概念

运算符优先级

运算符摘要

按位运算符强制