Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 の学習 > シンタックスと言語の基礎 > 演算子について > ビット演算子の使用について | |||
ビット演算子は、浮動小数点値を内部処理して、32 ビット整数に変換します。実際に実行されるビット演算は演算子によって異なりますが、どのビット演算でも 32 ビット整数が 2 進数 (ビット) 単位で評価され、新しい値が計算されます。ビット単位シフト演算子の一覧については、ビット単位シフト演算子についてを参照してください。ビット論理演算子の一覧については、ビット論理演算子についてを参照してください。
Flash でのビット演算子の使用はあまり一般的ではありませんが、状況によっては役立つことがあります。たとえば、Flash プロジェクトの許可のマトリックスを作成する場合で、許可の種類ごとに別の変数を作成したくないときがあります。このような場合は、ビット演算子を使用できます。
次の例では、Array.sort() メソッドと共にビット単位の論理和 (OR) 演算子を使用する方法を示します。
var myArr:Array = new Array("Bob", "Dan", "doug", "bill", "Hank", "tom");
trace(myArr); // Bob,Dan,doug,bill,Hank,tom
myArr.sort(Array.CASEINSENSITIVE | Array.DESCENDING);
trace(myArr); // tom,Hank,doug,Dan,Bob,bill
最初の行では、ランダムな名前の配列を定義し、それらの名前をトレースして [出力] パネルに表示します。次に、Array.sort() メソッドを呼び出し、定数値 Array.CASEINSENSITIVE および Array.DESCENDING を使って 2 つのソートオプションを指定します。ソートメソッドにより、配列のアイテムは逆の順番 (z から a) でソートされます。この検索では大文字と小文字が区別されません。a および A は同じように扱われますが、これは Z が a よりも先になる、大文字と小文字を区別する検索とは異なります。
Bob,Dan,doug,bill,Hank,tom tom,Hank,doug,Dan,Bob,bill
ソートメソッドでは、5 つのオプションを利用できます。
配列のソートオプションを定義するには、3 つの異なる方法があります。
my_array.sort(Array.CASEINSENSITIVE | Array.DESCENDING); // 定数 my_array.sort(1 | 2); // 数値 my_array.sort(3); // 数値を追加
ソートオプションの数値は、明白ではないものの実際にはビット単位の桁 (バイナリまたは基数 2) です。定数値 Array.CASEINSENSITIVE は数値 1 に等しく、これはバイナリ値 1 でもあります。定数値 Array.DECENDING は数値 2 またはバイナリ値 10 を持ちます。
バイナリ値の操作では、混乱が発生しがちです。バイナリには、1 または 0 の 2 つの値のみが可能であり、このために値 2 が 10 として表されます。数値 3 をバイナリで表示する場合は、11 (1+10) になります。バイナリでは、数値 4 は 100、数値 5 は 101、のようになります。
次の ActionScript では、ビット単位の論理積 (AND) 演算子を使用して Array.DESCENDING および Array.NUMERIC 定数を加算し、数値の配列を降順でソートする方法を示します。
var scores:Array = new Array(100,40,20,202,1,198); trace(scores); // 100,40,20,202,1,198 trace(scores.sort()); // 1,100,198,20,202,40 var flags:Number = Array.NUMERIC|Array.DESCENDING; trace(flags); // 18 (基数 10) trace(flags.toString(2)); // 10010 (バイナリ -- 基数 2) trace(scores.sort(flags)); // 202,198,100,40,20,1
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000743.html