ネットワークやパソコンの技術で「G」(ギガ)という単位をよく見かける。ギガビット・イーサネットとか,○○ギガ・ヘルツ動作のプロセッサというようなケースだ。

 ギガの前には,「M」(メガ)という単位をよく目にした。ギガとかメガというのは,もともと国際単位系(SI)という国際規格で決められた用語で,「SI接頭辞」と呼ばれる。

 SI接頭辞の中でよく知られているのは,1000(=10の3乗)倍を表す「k」(キロ)だろう。1kmとか1kgとか1kビット/秒のように使う。このほか,100分の1を示す「c」(センチ),1000分の1(=10の-3乗)を示す「m」(ミリ),100万分の1(10の-6乗)を示す「μ」(マイクロ)なども国際単位系で決められたSI接頭辞である。

 Mは元の単位の10の6乗(=100万)倍を表す。つまり1Mビットと書くと,100万ビットを意味するわけだ。GはMのさらに1000倍の10の9乗(=10億)倍を表す。この先は,10の3乗倍ごとに,「T」(テラ),「P」(ペタ),「E」(エクサ)と続いていく。このように,SI接頭辞はおおむね1000(10の3乗)倍ごとに決められている。つまり,GはMの1000倍になる。

 しかし,コンピュータの記憶容量などを表記するときは,「G」が「M」の1024(2の10乗)倍になることがある。例えば,ファイルのサイズやメモリー容量を示す場合は,1Gバイト=1024Mバイトとして表記する。同様に,1Mバイトは1024Kバイトを,1Kバイトは1024バイトをそれぞれ表す。つまり,1Gバイトは10億7374万1824(2の30乗)バイトになる計算である。

 つまり,コンピュータの記憶容量などを表記する場合の「G」,「M」,「K」は,SI接頭辞に似ているが,まったく違うものなのだ。これらは厳密には「2進接頭辞」といい,SI接頭辞と明確に分けらている。単に,2の10乗(1024)と10の3乗(1000)が比較的近い数値になるため,単位を表すアルファベットをそのまま流用したのである。

 なぜ1024(2の10乗)倍を使うかというと,コンピュータが2進数で動作するのが理由。コンピュータが2進数を扱うので,メモリーのようにデータのサイズに関連する数値は,なるべく2進数に準じた形で表現できた方が便利なのである。

 問題は,2進接頭辞に「G」や「M」といったSI接頭辞をそのまま流用したことにある。キロに関してだけは,1000倍を意味するときは小文字の「k」,1024倍の2進接頭辞なら大文字の「K」と表記して区別している。

 コンピュータ・ネットワークの技術文書などでは両者が混在するので,わかりにくいケースが多い。イーサネットや無線LAN,ADSLといった回線の伝送速度はSI接頭辞で表記する。一方,その回線を使って送るファイルのサイズは2進接頭辞になったりする。例えば「10Mバイトのファイルを11Mビット/秒の無線LANで送る」と言ったとき,前の「M」は2の20乗倍,後ろの「M」は10の6乗倍を意味するのである。

 実はこうした問題を解決するため,1998年に国際電気標準会議(IEC)がSI接頭辞に「i」を付加して2進接頭辞とする表記法を承認している。この方式では,2の10乗倍が「Ki」(キビ),2の20乗倍が「Mi」(メビ),2の30乗倍が「Gi」(ギビ)となる。一目瞭然で素晴らしい解決策なのだが,残念ながらあまり一般化していない。

山田 剛良