MIDIでの数値表現
MIDIだけでなくコンピュータなどデジタル機器を扱ううえで避けて通れないのが、数値表現です。 一般のMIDIユーザでMIDIメッセージの詳細を知る必要の無い人や数字が苦手な人はここは読み飛ばしてください。


2進数と16進数

私たちは普段、数を数えるときには10進数をつかっています。これは人間の指の数が両手で10本であるということに大きな影響を受けていますが、 MIDIやデジタル器機などではあまり扱いやすい数字ではありません。10の約数はそれ自身と1を除くと2と5しかありません(しかもどちらも素数)。 これは2小さい8のもつ約数の数と一緒です。また2大きい12は4つもあります。そのためしばしば私たちは普段の生活の上でも10以外の基数を使っています。 たとえば時間を計るときの12進数と60進数、ものを数えるときのダース(12進数)などです。

それはさて置き、似たような理由でデジタル機器でも10進数以外の進数表現をします。 コンピュータなどのデジタル機器は内部ではすべて数値データは2進で表現されます。
2進値で数値を表現すると次のようになります。

10進 0 1 2 3 4 5 6 7
2進(3桁) 000 001 010 011 100 101 110 111

10進数では0〜9の10通りの文字が使えますが2進数では0と1の2つの表現しかありません。 もともと0や1という文字も10進数をあらわすための文字なのですがその最初の2つを借りてきて 2進数を書き表します。
10進数の場合、’9’まで数えると桁があがって10(十)となりますが、2進数の場合 0、1と数えるとそこで桁がいっぱいになって位があがり10(イチゼロ)となります。 2進数の10は10進数の2です。
上の表では10進数で7まで数えると2進数では下3桁がすべていっぱいになってしまいます。 さらにこれに1加えると10進数では8ですが、2進数では桁があがって1000(イチゼロゼロゼロ) になります。
このようにコンピュータなどでは2進値を使って数値が表現されるわけですが、人間が扱うには少々不便です。 そこで2進値の3桁をまとめて8進数で表現したり、4桁をまとめて16進数で表現したりします。

10進 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2進 0 01 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
8進 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
16進 0 1 2 3 4 5 6 7 8 9 A B C D E F

16進数では10進数で10以上を表現するのにアルファベットをつかっています。 これは、10進数を表現する文字が0〜9の10種類しかない(当たり前)のでアルファベット で代用しているからです。

2進値で数字を表現する変わりに10進数を使わないで8進数や16進数を使う理由は、 上の表をよく見るとわかるのですが、桁が一致するということです。 2進数の3桁で表現できる数値が0〜7の8通りつまり8進数ということになり、 4桁で表現できる0〜15の16通りで16進数ということになります。

2進数から10進数への変換
1011 ―> x2x2x2x2= 8+0+2 +1 =11

2進数から16進数への変換
2進数の4桁が16進数の1桁対応していますから、2進値の100は16進数の4、 2進値の1010がAと上の表から簡単に変換できます。

例えば2進値の11100100は4桁ずつ考えて1110は16進数のE、0100は16進数の4 ですから、値はE4(16進数)となります。

ちなみに2進数表記の場合は数字の後ろにB、10進数の場合はD、16進数の場合はHを つけるのが慣例になっています。BはBinary、DはDecimal、HはHexaoctalのことです。 例)1010b = 10d = Ah


ビット(Bit)とバイト(Byte)

デジタルの世界では2進値の1桁をビットとよび、これが数値をあらわす最小単位になります。 1ビットであらわせるのは0と1、あるかないか、白か黒かのようにの2通りの表現しかありません。 最小単位であるビットを8つあつめると1バイトになります。つまり8ビットで1バイトです。 (8ビット以外で1バイトとするデジタル機器もありますが、一般的に8ビットと考えてください)

1バイトを構成するビットは低いけたから、ビット0、ビット2、ビット3・・・ビット7と数えます。 1ビットは2進数の1桁に相当するわけですから4ビットの固まりで16進数の1桁をあらわせます。 これをニブル(Nible)といいます。
1bit000000011(1h)
2bit000000113(3h)
3bit000001117(7h)
4bit0000111115(Fh)
5bit0001111131(1Fh)
6bit0011111163(3Fh)
7bit01111111127(7Fh)
8bit11111111255(FFh)



MIDIにおけるデータの扱い

一般にバイトと最下位ビットをLSB(Least Significant Bit)といい、最上位ビットをMSB(Most Significant Bit)といいます。



MIDIではステータスバイトとデータバイトの区別にMSBをつかい、残りを有効なデータとして使います。 つまりMIDIにおいて1バイトで表現できるデータは7ビット分0〜127(0h〜7Fh)しかありません。
これについては後で詳しく説明します。