■ 論理演算について
これはなんだかんだと言ってみても、プログラミングには欠かせない。VBでは私の知らない論理演算もサポートされているようであるが、ここでは代表的なAnd Or Xor について説明する。
And: 両方とも本当なら、答えは本当。
Or: どちらかが本当なら、答えは本当。
Xor: 両者の答えが違えば、答えは本当。
これが、日本語での説明になる。一覧表にすると表2のようになる。
論理演算の多くはif条件式で使われる。たとえば「Xの値が0~9まで」という条件式は
if ((X<=0) And (X<=9)) Then
になり、「0より小さい、もしくは9より大きい」という条件式であれば
になるのである。
|
演算 | 式 | 結果 |
And | 本当 And 本当 | 本当 |
うそ And 本当 | うそ |
本当 And うそ | うそ |
うそ And うそ | うそ |
Or | 本当 Or 本当 | 本当 |
うそ Or 本当 | 本当 |
本当 Or うそ | 本当 |
うそ Or うそ | うそ |
Xor | 本当 Xor 本当 | うそ |
うそ Xor 本当 | 本当 |
本当 Xor うそ | 本当 |
うそ Xor うそ | うそ |
表2:論理演算(言葉編) |
|
演算 | 式 | 結果 |
And |
1 | | 1 | 1 |
0 | | 1 | 0 |
1 | | 0 | 0 |
0 | | 0 | 0 |
Or |
1 | | 1 | 1 |
0 | | 1 | 1 |
1 | | 0 | 1 |
0 | | 0 | 0 |
Xor |
1 | | 1 | 0 |
0 | | 1 | 1 |
1 | | 0 | 1 |
0 | | 0 | 0 |
表3:論理演算(数値編) |
|
■ 数値に対する論理演算
論理演算は数値に対しても可能なのである。しかし常識で考えれば、数値には「本当」も「嘘」も無いはずで、変である。しかし
という数式は正しい。ということで、これを理解するためには2進数を覚えなくてはならない。
本講座は超初心者を対象にしているからして、「2進数は常識でしょう。」という事は許されない。また2進数の考え方は時として便利だったりするわけなので、その辺も合わせて解説していく。
|
10進数 | 16進数 | 2進数 |
0 | 00 | 0000 |
1 | 01 | 0001 |
2 | 02 | 0010 |
3 | 03 | 0011 |
4 | 04 | 0100 |
5 | 05 | 0101 |
6 | 06 | 0110 |
7 | 07 | 0111 |
8 | 08 | 1000 |
9 | 09 | 1001 |
10 | 0A | 1010 |
11 | 0B | 1011 |
12 | 0C | 1100 |
13 | 0D | 1101 |
14 | 0E | 1110 |
15 | 0F | 1111 |
16 | 10 | 10000 |
17 | 11 | 10001 |
表4:10進,16進,2進数 |
■ 2進数
10進数は0~9までの10種類の文字を使って表される。16進数は0~9とA~Fまでの16種類の文字を使って表される。同じように2進数は0~1の2種類の数値を使って表される数値の形態である。表4に3種類の対応表を載せておく。
「数値における論理演算」とは、数値を2進数のレベルで論理演算することなのである。前ページの表3は論理演算を数値で行った時の結果表である。 ア
「本当」 = 「True」 = 1
「うそ」 =「False」 = 0
と考えて計算するのである。ここで、
について再考してみる。
であるからそれぞれの桁を縦に論理演算していくと一番右の桁は0 And 0 = 0で右から2番目は1 And 1 = 1になる。同様に計算していくと結果は0010になりこれを10進数で表すと2になるのである。ちなみに
10 Or 6 = 14
10 Xor 6 = 12
になるので各自2進数に変換して確認してみよう。
この計算が実際に何の役に立つのかをいくつか例を挙げて説明していこう。
|