オルタナティブ・ブログ > 一般システムエンジニアの刻苦勉励 >

身の周りのおもしろおかしい事を探す日々。ITを中心に。

1024バイト=1キビバイト≠1キロバイト

»

自分もつい最近知ったばかりなのですが、SEがよく頭を悩ませる1キロバイトが1024バイトの意味で使われているのか1000バイトの意味で使われているのか、という問題は2進接頭辞という接頭辞をつけることで回避する事ができるそうです。

事の発端は会社の帰りに久しぶりに頭文字Dの最新刊を見かけたことです。藤原君がまだハチロクで頑張っている事に驚きました。相手は比較的新しい車を使っていました。ランエボの1から2,3,4と順番に強くなっていく相手と戦う展開なのか、はたまた高橋兄弟にRX-8に乗る三男が登場するのかなどと勝手に予想していたのですが違いましたね。わしのランエボは108まであるぞ、みたいな展開だったら楽しいな、と妄想しながら家に帰ってきました。ランエボがいくつまで出たのだろうと思って調べてみると、今年の10月にちょうどランエボXが出たようです。何気なくスペックを見ていると気になる部分がありました。

最高出力は280ps/6500rpm

あれ。馬力ってもう使ってはいけないんじゃなかったっけな?と思って調べてみると、自動車のエンジンなどは馬力が浸透しているので使ってもよいそうです。やはり国産スポーツカーの280psはスポーツカーである証であり、208キロワットでは調子が悪いと思います。 (と、思いきや280ps規制も無くなったんですね。軽自動車の64ps規制は存続しているそうです。そういえばかつての愛車ビートは64psでした。)

ただし、本文ではなく附則において、内燃機関・外燃機関の工率の計量に限定して「当分の間、工率の法定計量単位とみなす」として使用を認めているものである。これは、新計量法がSIを全面的に導入するために制定されたものであり、本来であればSI組立単位であるワットを使うべきであるが、馬力がいまだに広く使われており、これを廃止すると混乱を招くために移行措置として使用を認めているものである。今日でも、レシプロエンジンの出力表示にはキロワット(kW)とともに馬力(仏馬力)が併記されていることが多い。(wikipediaより)

ここでwikipediaの単位のページを流し読みしていたところ、キビバイト(KiB)メビバイト(MiB)ギビバイト(GiB)などの見慣れぬ単位を発見しました。これらはそれぞれキロバイト(KB)・メガバイト(MB)・ギガバイト(GB)に2進接頭辞であるbiを付けたものです。

これをすると何が便利かというと、『キロバイト』とだけ言った場合に1024バイトなのか1000バイトなのかを考えずによくなるということです。よく言われる基準では、メモリやコンピュータ上のファイルサイズは1024を基本とした2進接頭辞が使われます。例えばメモリを4GB搭載しています、と言ったらそれは4GiB(ギビバイト)搭載していることになりますので、4*(2^30)=1,073,741,824バイト4,294,967,296バイトになります。

一方で、通信速度やCPUのクロック周波数やハードディスクの容量では1000を基本としたSI接頭辞が使われます。例えばハードディスクを1TB(テラバイト)搭載しています、と言ったらそれは1,000,000,000,000バイトになります。これをWindowsなどのOSで表示すると、約931GBと表示されます。この場合のGBはギガバイトとして用いられていますが、意図するところはGiB(ギビバイト)ですので、931GiB=1,000,000,000,000バイトで間違ってはいません。が、ちょっと損した気持ちになります。 なお、ハードディスクでSI接頭辞が好まれるのは、少しでも容量を大きく見せるためであると言われます。

名前 記号 2進接頭辞 SI接頭辞
キロ(kilo) K 2^10 =
1,024
10^3 =
1,000
メガ(mega) M 2^20 =
1,048,576
10^6 =
1,000,000
ギガ(giga) G 2^30 =
1,073,741,824
10^9 =
1,000,000,000
テラ(tera) T 2^40 =
1,099,511,627,776
10^12 =
1,000,000,000,000
ペタ(peta) P 2^50 =
1,125,899,906,842,624
10^15 =
1,000,000,000,000,000
エクサ(exa) E 2^60 =
1,152,921,504,606,846,976
10^18 =
1,000,000,000,000,000,000
ゼタ(zetta) Z 2^70 =
1,180,591,620,717,411,303,424
10^21 =
1,000,000,000,000,000,000,000
ヨタ(yotta) Y 2^80 =
1,208,925,819,614,629,174,706,176
10^24 =
1,000,000,000,000,000,000,000,000

こちらの2進接頭辞の問題点はと言うと、普及していないことです。大学時代に一度「40Gのハードディスクを買うたんやけど、40Gにちょっと足りひんねん。」という相談を受けたことがありますが、説明にとても苦労しました。SI接頭辞でさえ日常生活で「ギガってメガの何倍だっけ?」と聞かれることがあるようにITなどの理系職に無い人に普及していません。広く一般に2進接頭辞が普及することは難しいことだと思います。せめてIT業界の中だけでももっと普及すると便利だろうなと思うのですが、上に挙げたようなお約束があるため、業界内では業界内で現行のSI接頭辞だけでも意味が通じます。メモリなら1024系でディスクなら1000系です。

これから一層データ容量が増大していくことが予測されています。2002年に地球上で生成されたデジタルデータは5エクサバイトと言われます。エクサバイトまで行くと上の表にある通り、受け止め方を誤ると15%もの違いが出てきます。アメリカの調査会社IDC社の調査によると、2006年に作成もしくは複製されたデジタル情報量は161エクサバイトに上るそうです。本日たまたまとおるさんのブログでも毎秒390ギガバイトのデータが作成されるとの記述がありました。390*60*60*24*365=12エクサバイトですので、複製を含んでいないのかもしれません。ともあれ、2010年には2006年の約6倍の988エクサバイトに達する見込みだそうです。

総量でエクサバイト単位ですので、我々としてはエクサバイトを知っていれば安心、ぺタバイトはお目見えする機会があるかも知れないくらいで、テラバイトは身の回りでも珍しくなくなり、ギガバイトは知らなかったら生きていけないくらいの気持ちでいればよいでしょうか。

#<訂正>2007/10/25 文中の誤りを訂正しました。
 × 4*(2^30)=1,073,741,824バイト
 ◎ 4*(2^30)=4,294,967,296バイト

Comment(5)