トップページ ≫ スクリプト ≫ 用語ガイド ≫ 「論理演算」とは

スクリプト [ 用語ガイド 「論理演算」とは ]

はじめに








論理演算とは、
変数の中身を2進数で比較して、新しい数値を変数に代入する事です。

2進数とは、"1"と"0"だけの組み合わせで、数値を表したものです。
例えば、"5"の2進数は、"0101"と表されます。

図2のように、論理演算では指定した2つの数値を2進数へ変換して、
それぞれ1桁ずつ、一定のルールに照らし合わせながら、
その結果を"1"または"0"で出力し、新しい数値を作り出します。

図2では、「テスト」という変数にセットしてある"6"と"7"を、
「xor」という命令で論理演算していて、結果は"0001"となりました。
つまり、これで変数「テスト」には、答えの"1"が代入されるわけです。

それでは、ここでちょっと問題です。
図3のように、"3"と"5"を「xor」で論理演算したら、
変数「テスト」に代入される数値はいくつになるでしょう?
(答えは、図3にマウスポインタを乗せると表示されます)

論理演算には、「and」「or」「xor」「not」という4つの命令があって、
値を比較して結果を出力する時のルールがそれぞれ異なります。
各命令の詳細については、下記をご覧ください。

and命令


and命令では、両方の値が"1"の時だけ、結果に"1"が出力されます。
それ以外の時は、結果に"0"が出力されます。

例. 答えは、"1"となります。
 

or命令


or命令では、一方の値に"1"があれば、結果に"1"が出力されます。
それ以外の時は、結果に"0"が出力されます。

例. 答えは、"7"となります。
 

xor命令


xor命令では、値が一致しなかった時だけ、結果に"1"が出力されます。
それ以外の時は、結果に"0"が出力されます。

例. 答えは、"6"となります。
 

not命令


not命令では、指定した数値のままで論理演算が行なわれます。
変数の中身が"0"の時は、変数に"1"を代入します。
変数の中身が"0"以外の時は、変数に"0"を代入します。

例. 答えは、"0"となります。
 

条件分岐の代わりに使用した例







例えば、図1のようなスクリプトを、
「おもり付き転換器」のスクリプトエディターに記述したとします。

この場合、キーボードの[A]を押すたびに、
転換器は「正位」と「反位」に切り替わるようになります。

これは、転換器の状態を変数に取得した後、
条件分岐によって、下記のように変数の中身を書き換えて、
最後に、その変数で転換器の状態を再設定しているためです。

・変数の中身が"6"の場合は、変数に"1"を代入する
・変数の中身が"6"以外の場合は、変数に"6"を代入する

つまり、切替メソッドを実行するたびに、
変数には"1"または"6"を代入しているという事になります。



このような場合は、図2のように論理演算を用いれば、
条件分岐とほぼ同じ処理を、1行のスクリプトで行なう事ができます。