位运算移位运算符
2018-06-16 15:19 更新
语法:
ShiftExpression : AdditiveExpression ShiftExpression << AdditiveExpression ShiftExpression >> AdditiveExpression ShiftExpression >>> AdditiveExpression
左移运算符
表示对左操作数做右操作数指定次数的按位左移操作。
产生式 ShiftExpression : ShiftExpression << AdditiveExpression 按照下面的过程执行 :
- 令 lref 为解释执行 ShiftExpression 的结果 .
- 令 lval 为 GetValue(lref).
- 令 rref 为解释执行 AdditiveExpression 的结果 .
- 令 rval 为 GetValue(rref).
- 令 lnum 为 ToInt32(lval).
- 令 rnum 为 ToUint32(rval).
- 令 shiftCount 为用掩码算出 rnum 的最后五个比特位 , 即计算 rnum & 0x1F 的结果。
- 返回 lnum 左移 shiftCount 比特位的结果。结果是一个有符号 32 位整数。
带符号右移运算符
filling bitwise right shift operation on the left operand by the amount specified by the right operand.
产生式 ShiftExpression : ShiftExpression >> AdditiveExpression 按照下面的过程执行 :
- 令 lref 为解释执行 ShiftExpression 的结果 .
- 令 lval 为 GetValue(lref).
- 令 rref 为解释执行 AdditiveExpression 的结果 .
- 令 rval 为 GetValue(rref).
- 令 lnum 为 ToInt32(lval).
- 令 rnum 为 ToUint32(rval).
- 令 shiftCount 为用掩码算出 rnum 的最后五个比特位 , 即计算 rnum & 0x1F 的结果。
- 返回 lnum 带符号扩展的右 移 shiftCount 比特位的结果 . The most significant bit is propagated. 结果是一个有符号 32 位整数。
无符号右移运算符
Performs a zero-filling bitwise right shift operation on the left operand by the amount specified by the right operand.
产生式 ShiftExpression : ShiftExpression >>> AdditiveExpression 按照下面的过程执行 :
- 令 lref 为解释执行 ShiftExpression 的结果 .
- 令 lval 为 GetValue(lref).
- 令 rref 为解释执行 AdditiveExpression 的结果 .
- 令 rval 为 GetValue(rref).
- 令 lnum 为 ToUint32(lval).
- 令 rnum 为 ToUint32(rval).
- 令 shiftCount 为用掩码算出 rnum 的最后五个比特位 , 即计算 rnum & 0x1F 的结果。
- 返回 lnum 做 0 填充右移 shiftCount 比特位的结果 . 缺少的比特位填 0。 结果是一个无符号 32 位整数 .
以上内容是否对您有帮助:
← 乘法运算符
更多建议: