>> ビット単位の右シフト演算子

expression1 >> expression2

expression1expression2 を 32 ビット整数に変換し、expression2 の変換により生成された整数で指定される桁数だけ expression1 内のすべてのビットを右にシフトします。シフト後、右端のビットは破棄されます。元の expression の符号を維持するには、expression1 の最上位ビット (左端のビット) が 0 である場合は左側のビットに 0 を置き、最上位ビットが 1 である場合には 1 を置きます。値を右に 1 つシフトすることは、2 で割って剰余を切り捨てることと同じです。

浮動小数点数は、小数点以下が切り捨てられて整数に変換されます。正の整数は 4294967295 (0xFFFFFFFF) を最大値とする符号なし 16 進値に変換されます。最大値より大きい値は、32 ビットを超えないように、変換時に最上位の桁が切り捨てられます。負の値は、2 の補数表現を使用して、-2147483648 (0x800000000) を最小値とする符号なし 16 進値に変換されます。最小値よりも小さい値は、さらに高い精度で 2 の補数に変換された上で、最上位の桁が切り捨てられます。

戻り値は符号付きの 2 の補数として解釈されるため、戻り値は -2147483648 ~ 2147483647 の整数になります。

使用できるバージョン : ActionScript 1.0、Flash Lite 2.0

オペランド

expression1 : Number - 右にシフトされる数値または式。

expression2 : Number - 0 ~ 31 の整数に変換される数値または式。

戻り値

Number - ビット演算の結果。

次の例では、65535 を 32 ビット整数に変換し、右側に 8 ビットシフトします。

var x: Number = 65535 >> 8; 
trace(x); // 255 を出力する

次の例は、前の例の結果を示しています。

var x: Number = 255;

これは、10 進数の 65535 が 2 進数の 1111111111111111 (1 が 16 個) であり、8 ビットだけ右にシフトすると 2 進数の 11111111 になるためです。2 進数の 11111111 は 10 進数の 255 です。整数は 32 ビットであるため、最上位ビットの 0 で残りのビットを埋めます。

次の例では、-1 を 32 ビット整数に変換し、右側に 1 ビットシフトします。

var x: Number = -1 >> 1;
trace(x); // -1 を出力する

次の例は、前の例の結果を示しています。

var x: Number = -1;

これは、10 進数の -1 が 2 進数の 11111111111111111111111111111111 (1 が 32 個) に等しく、右に 1 ビットシフトすると最下位ビット (右端のビット) が切り捨てられ、最上位ビットに 1 が詰められるためです。その結果は 2 進数の 11111111111111111111111111111111 (1 が 32 個) となり、これは 32 ビットの整数 -1 を表します。

関連項目

>>= ビット単位の右シフト後代入演算子