■データと論理演算

Visual Basic などの高級言語でプログラムを覚え始めると、メモリを操作するという意識はほとんど芽生えない。例えば、変数に値を代入するということは、実際にはメモリに記憶することに他ならないのだが、プログラム上の変数にメモリの顔はない。

唯一、メモリの存在を感じるのはバイト型(Byte)のデータを宣言するときだが、バイトがメモリの単位と知らなければ、単に 0〜255 という利用範囲があるだけ。つまり、10進数の世界でウロウロしている……というわけだ。いくらメモリが豊富にあっても、これでは効率的なプログラムは組めない。

例えば、五目並べやオセロの盤面を二次元配列で管理したとしよう。個々の内容は、石が置いてあるかないか、置いてある場合は色が白か黒かという情報だ。2種類の情報だからといって、ここでバイト型のデータを2つ確保すればどうなるか、単純計算でデータ量が2倍になることがわかる。では、情報が5種類だったら……となれば、どこかで工夫の必要を感じるだろう。

アセンブラの経験があると、このようなときは当然のごとくデータをビット単位に分けて使う。これ、すなわち2進数の世界である。

いわゆる「アルかナイか」だけの区別なら、こうして1つのバイト型データに8種類の情報を記憶できる。いうまでもなく、それらは個別に読み出したり変更したりできなければならない。そして、そういった際に必要なのが論理演算の知識だ。

論理演算とは、下記のように数値を2進数で操作する演算法のこと。当然、2進数だけでなく10進数、16進数といった記数法についての予備知識も求められる。といっても、中学〜高校低学年の数学で習うことなので、さして難しいことではない。なお、ここではわかりやすく2進数の数値の後ろに"b"を付けて記述したが、Visual Basic では2進数による直接表記はできないので、10進数または16進数に換算して記述しなければならない。

■ OR(論理和)の例 …… 特定のビットを1にする

■ AND(論理積)の例 …… 特定のビットを0にする

実際には、これ以外の論理演算も存在するが、とりあえずはこの2つを使いこなすことが先決だ。また、こういった論理演算はグラフィックスを操作する際にも、必須の知識として要求される。いわば、あらゆるテクニックの基礎となる大地のような存在なのだ。決して避けては通れないので、頭の中で自在に論理演算をコントロールできるようになるまで、徹底的に慣れ親しむようにしよう!