コンピューターで使用されるデータ容量の単位「bit(ビット)」や「Byte(バイト)」。
これらに接頭辞「K(キロ)」「M(メガ)」「G(ギガ)」を付けることで大きな数値も簡略化でます。
それぞれ単位の頭に付けることで1000倍、100万倍・・・という意味になりますね。
ですが、コンピューターは2進数で数を数えています。2のn乗で数えます。となると、SI接頭辞である10のn乗を使うと必ず食い違いがでてしまします。例えば「10の3乗=1000=キロ(k)」という接頭辞が使えますが、同じように2進数を使うと「2の10乗=1024」と少し違いがでてしまいます。
これをそのまま使ってしまうと、データ容量の正確な値がわからなくなってしまいます。
そこで、もっと正しい単位を使おうと「2進接頭辞」というものが作られました。今回はこのお話をいたします。
国際単位系
国際単位系(仏:Le Système International d’Unités、英:The International System of Units、略称:SI)は、国際的に定められた世界共通の単位系です。フランス語が略称の元になっているのは、その前のメートル法がフランスの発案であった歴史的経緯のためです。
1954年の第10回国際度量衡総会(CGPM)で採択されました。
現在は多くの国で共通して使うことができる単位系として普及しました。
この単位系では時間 (s)、長さ (m)、質量 (kg)、電流 (A)、熱力学温度 (K)、物質量 (mol)、光度 (cd)の7つを基本単位とし、これらの組み合わせで様々な別の単位(組立単位)の定義をします。
SI接頭辞
国際単位系 (SI) において、SI単位の前につく10進数による倍数表記のことを「SI接頭辞」といいます。ただ、SIにしか使えないわけではなく、他の様々な単位にも使用されています。今回の記事のメインである「データ容量の単位」である「bit(ビット)」や「Byte(バイト)」にも使用されています。
SI単位系の頭に10の累乗倍の数を示す接頭辞を付けることで、大きな量をコンパクトに記述できるようになりました。決められた接頭辞の中でよく使われるのは以下の通りです。
10のn乗 | 接頭辞 | 記号 | 数字 |
10の12乗 | テラ (tera) | T | 1兆 |
10の9乗 | ギガ (giga) | G | 10億 |
10の6乗 | メガ (mega) | M | 100万 |
10の3乗 | キロ (kilo) | k | 1000 |
10の2乗 | ヘクト (hecto) | h | 100 |
10の1乗 | デカ (deca, deka) | da | 10 |
10の0乗 | なし | なし | 1 |
10の−1乗 | デシ (deci) | d | 1/10 |
10の−2乗 | センチ (centi) | c | 1/100 |
10の−3乗 | ミリ (milli) | m | 1/1000 |
10の−6乗 | マイクロ (micro) | u | 1/100万 |
10の−9乗 | ナノ (nano) | n | 1/10億 |
これをSI単位系の頭に付けることで、何倍になっているのかを簡単に表せます。
メートルで言えば「㎞」とすることで「1000m」を表すことができ、重さで言えば「㎎」とすることで「1/1000g」を表すことができます。皆さんご存知の通りデータ容量にも使えます。最近は「TB(テラバイト)」と随分大きな量を持ったものも普通に買えるようになりましたね。
10進数を元にしたSI接頭辞が2進数の世界であるコンピューターに入ると・・・
SI接頭辞は10進数を元にして倍数表記しています。
そして、このSI接頭辞はデータ容量の単位である「bit(ビット)」や「Byte(バイト)」にも使用されています
ですが、コンピューターの世界は2進数の世界です。データ容量も最小単位である「bit」は「0と1」のどちらかを記録したという定義ですので、これから量を増やすと「2のn乗」となります。因みに、「Byte(バイト)」は「8bit」をひとまとめにした単位です。
1 Byte(B) = 8 bit
では、このコンピューターの世界とSI接頭辞を組み合わせてみます。
すると、以下のように”ズレ”がでてしまいます。
10のn乗 | 接頭辞 | 数字 | 2のn乗 | 数字 | |
10の12乗 | T | 1兆 | 2の40乗 | 1,099,511,627,776 | |
10の9乗 | G | 10億 | 2の30乗 | 1,073,741,824 | |
10の6乗 | M | 100万 | 2の20乗 | 1,048,576 | |
10の3乗 | k | 1000 | 2の10乗 | 1024 |
例えば「1TB」と表記した場合、本来は「1兆バイト」となるはずです。
しかし、本来の容量は2の40乗なので、その差「約1000億バイト(約100GB)」と誤差どころではないほどの差になってしまいます。これでは困りますね。
実際、外付けHDDには1TBの容量を持つものも多くなりましたが、表記上1TBとなっていても、実際は以下の様な計算により「約931GB」と認識します。
1,000,000,000,000/(1,024×1,024×1,024) ≒ 931GB
2進接頭辞
そこで考案されたのが「2進接頭辞」と呼ばれるものです。
国際電気標準会議【International Electrotechnical Commission、略称:IEC】は、1998年にSI接頭辞と区別できる新たな 2進接頭辞 を承認しました。同様の規格がIEEEでも「IEEE 1541-2002」として成立しています。
この2進接頭辞は、接頭辞として以下のように定義しています。
接頭辞 | 記号 | 数字 |
キビ (kibi) | Ki | 2の10乗 = 1 ,024 |
メビ (mebi) | Mi | 2の20乗 = 1,048,576 |
ギビ (gibi) | Gi | 2の30乗 = 1,073,741,824 |
テビ (tebi) | Ti | 2の40乗 = 1,099,511,627,776 |
今までの接頭辞の後ろに「i」を付け足し「~ビ」と発音します。
これはそのまま「2の10n乗」で定義しているので正しくデータ容量を表現できます。
例えば、「1TiB」と表記されていれば正しく「1,099,511,627,776バイト」という意味になります。
この2進接頭辞の考案により明確な使い分けができるようになりましたが、残念ながら一般的な表記として普及していません。
この2進接頭辞ですが、原則データ容量を中心に使用し、それ以外の基本単位などには使用してはならないと注意喚起しています。また、CPUなどに使用される動作周波数などの単位も日本の計量法等により国際単位系を用いる必要があるので、周波数の単位で2進接頭辞は利用できません。
まとめ
以上、久しぶりに言葉の定義について書いてみました。
Windowsがデータ容量に対してSI接頭辞を使用しているため、実際のデータ容量との差が誤解として広まってしまいました。LinuxなどのOSでは2進接頭辞を使用していることが多いのですが、今Windowsがそれを変更しようとすると少しの間混乱が起こりそうです。
ただ、今の状況ではこの知識も雑学程度のものですので、頭の片隅にでも覚えておいてください。
コメント
コメント欄を開く
コメント一覧 (2件)
こんばんは。昨今のPCの高性能化・大容量化は凄まじいですね。
確か来年には5TBのHDDが登場するとか…。
いずれテラが標準となり、さらに上のヨタが登場する日も近いのかもしれませんね。
ここ数年の大容量化のスピードは本当に早いですね~
私のところではもう外付けHDD、内蔵HDDともにテラバイトが標準です(笑
ただ、大容量になるとデータの転送にも時間がかかりますし、壊れてしまったときもショックがでかいので
USB3.0のあとに続く新しい通信規格がでてくれるとヨタバイトのものも実用化できるかもしれませんね。