訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 ShiftExpression : AdditiveExpression ShiftExpression << AdditiveExpression ShiftExpression >> AdditiveExpression ShiftExpression >>> AdditiveExpression
右オペランドで指定された量だけ左オペランドについてバイト左シフト演算を実行。 プロダクション
ShiftExpression : ShiftExpression << AdditiveExpression
は、次のように評価されます。
1. lref は、 ShiftExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、 AdditiveExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. lnum は、 ToInt32(lval) とする 6. rnum は、 ToUint32(rval) とする 7. shiftCount は、 rnum の全て、最下位5ビットをマスク設定した結果とする つまり計算 rnum & 0x1F という意味 8. shiftCount ビット分 lnum を左シフトした結果を返す その結果は符号付き32ビット整数
右オペランドで指定した量によって左オペランドについて符号付き(sign-filling)ビット単位右シフト演算を実行。 プロダクション
ShiftExpression : ShiftExpression >> AdditiveExpression
は、次のように評価されます。
1. lref は、 ShiftExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、 AdditiveExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. lnum は、 ToInt32(lval) とする 6. rnum は、 ToUint32(rval) とする 7. shiftCount は、 rnum の全て、最下位5ビットをマスク設定した結果とする つまり計算 rnum & 0x1F という意味 8. shiftCount ビットで lnum の符号拡張右シフトを実行した結果を返す 最も重要なビットが伝達される その結果は、符号付き32ビット整数
右オペランドで指定された量で左オペランドについてゼロ埋めビット単位右シフト演算を実行。 プロダクション
ShiftExpression : ShiftExpression >>> AdditiveExpression
は、次のように評価されます。
1. lref は、 ShiftExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、 AdditiveExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. lnum は、 ToUint32(lval) とする 6. rnum は、 ToUint32(rval) とする 7. shiftCount は、 rnum の全て、最下位5ビットをマスク設定した結果とする つまり計算 rnum & 0x1F という意味 8. shiftCount ビットで lnum のゼロ埋め右シフトを実行した結果を返す 空いたビットはゼロで埋められる その結果は、符号なし32ビット整数