Flash Lite 2 |
|||
| Flash Lite 2.x ActionScript リファレンスガイド > ActionScript 言語エレメント > 演算子 > >> ビット単位の右シフト演算子 | |||
expression1 >> expression2
expression1 と expression2 を 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 を表します。