今回は論理演算について。
論理演算はBASICでもよく使われますねぇ〜。
ANDとかORとかいうヤツです。
マシン語では、グラフィックとか掛け算、割り算に代わるような
計算をするのによく使われるそうです。
私は一応知っていますが、内容をすぐ忘れてしまうので、
しっかり復習します^^
それでは本を読みながらまとめていきます。
勉強にはこの本を使います。
論理演算の代表的なものが4つ。
NOT、AND、OR、XOR
です。
ふむふむ。
NOT(ノット)
NOTは否定を行う演算。
NOT 1 = 0
NOT 0 = 1
0と1だけ(2進数だから)の世界だと否定するということは、逆になるということ。
1の逆は0で、
0の逆は1なので、
上の式が成り立ちます。
表にするとこうなります。
--------------------------
NOT 0 = 1
--------------------------
NOT 1 = 0
--------------------------
まぁわかります^^
逆にするだけです。
NOTはちょっと特殊かもしれないですね。
論理積 AND(アンド)
AND、OR、XOR はちょっとした計算みたいな感じです。
2つの値があって、それを計算して1つの値をだす感じです。
具体的にみたほうが早いです。
ANDは論理積といいます。
1 AND 1 = 1
1 AND 0 = 0
2つの値が両方とも1ならば、1になります。
2つの値のうち、どちらかが0ならば、0になります。
表にするとこうなります。
--------------------------
X AND Y = Z
--------------------------
0 0 = 0
--------------------------
0 1 = 0
--------------------------
1 0 = 0
--------------------------
1 1 = 1
--------------------------
論理演算 OR(オア)
ORは論理和といいます。
0 OR 0 = 0
0 OR 1 = 1
どちらか一方が1なら、1です。
両方が0なら0です。
表にするとこうなります。
--------------------------
X OR Y = Z
--------------------------
0 0 = 0
--------------------------
0 1 = 1
--------------------------
1 0 = 1
--------------------------
1 1 = 1
--------------------------
論理演算 XOR(エックスオア
XORは排他的論理和といいます。
0 XOR 1 = 1
1 XOR 1 = 0
一方が1で、他方が0のとき1です。
両方同じだと0になります。
--------------------------
X XOR Y = Z
--------------------------
0 0 = 0
--------------------------
0 1 = 1
--------------------------
1 0 = 1
--------------------------
1 1 = 0
--------------------------
まとめ
本当にややこしい;
まぁ覚えるだけといってしまえばそこまでなんですけどねw
暗記しましょう!
ちなみにBASICで IF文にANDとかORを使うことがありますが、
あれも実はこの論理演算なんです。
IF X>100 AND X<200 THEN ~~~~
などと座標の範囲指定をしたりしますが、
X>100が真なら -1
X<200が真なら -1
補足
関係演算子 (= とか > とか < )は
2つの値を比較し、真(-1)、偽(0)を返します。
例
(右辺) = (左辺) は 、右辺と左辺が等しいと真(-1)、違うと偽(0)を返し、
(右辺) > (左辺) なら、右辺が左辺より大きいと真(-1)、小さいと偽(0)を返します。
ということは
IF -1 AND -1 THEN ~~~~
とか
IF -1 AND 0 THEN ~~~~
となりまして、
ANDの計算の結果が 真か偽(0以外か 0)によってTHEN以降の命令がされているのです。
(-1ってどうなるの?と思うかもしれませんがビットに直すとわかります。いずれ書きます。)
ちょっと横道にそれましたが、面白いなぁ〜と感じます^^
論理演算を使うことで、ちょっとプログラム的に凝ったことができる
のかな?
面倒だけど、暗記、暗記!
次回は論理演算をマシン語でやるのをやります。
8ビットの論理演算です。
なんかかっこいいですよね!
では〜。
つづきはこちら。
MSX BASICの情報はこちらへ〜