位運算移位運算符

2018-06-16 15:19 更新

語法:

ShiftExpression : AdditiveExpression ShiftExpression << AdditiveExpression ShiftExpression >> AdditiveExpression ShiftExpression >>> AdditiveExpression

左移運算符

 表示對左操作數(shù)做右操作數(shù)指定次數(shù)的按位左移操作。

 產(chǎn)生式 ShiftExpression : ShiftExpression << AdditiveExpression 按照下面的過程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 ShiftExpression 的結果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 AdditiveExpression 的結果 .
  4. 令 rval 為 GetValue(rref).
  5. 令 lnum 為 ToInt32(lval).
  6. 令 rnum 為 ToUint32(rval).
  7. 令 shiftCount 為用掩碼算出 rnum 的最后五個比特位 , 即計算 rnum & 0x1F 的結果。
  8. 返回 lnum 左移 shiftCount 比特位的結果。結果是一個有符號 32 位整數(shù)。

帶符號右移運算符

 filling bitwise right shift operation on the left operand by the amount specified by the right operand.

 產(chǎn)生式 ShiftExpression : ShiftExpression >> AdditiveExpression 按照下面的過程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 ShiftExpression 的結果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 AdditiveExpression 的結果 .
  4. 令 rval 為 GetValue(rref).
  5. 令 lnum 為 ToInt32(lval).
  6. 令 rnum 為 ToUint32(rval).
  7. 令 shiftCount 為用掩碼算出 rnum 的最后五個比特位 , 即計算 rnum & 0x1F 的結果。
  8. 返回 lnum 帶符號擴展的右 移 shiftCount 比特位的結果 . The most significant bit is propagated. 結果是一個有符號 32 位整數(shù)。

無符號右移運算符

 Performs a zero-filling bitwise right shift operation on the left operand by the amount specified by the right operand.

 產(chǎn)生式 ShiftExpression : ShiftExpression >>> AdditiveExpression 按照下面的過程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 ShiftExpression 的結果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 AdditiveExpression 的結果 .
  4. 令 rval 為 GetValue(rref).
  5. 令 lnum 為 ToUint32(lval).
  6. 令 rnum 為 ToUint32(rval).
  7. 令 shiftCount 為用掩碼算出 rnum 的最后五個比特位 , 即計算 rnum & 0x1F 的結果。
  8. 返回 lnum 做 0 填充右移 shiftCount 比特位的結果 . 缺少的比特位填 0。 結果是一個無符號 32 位整數(shù) .


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號