1KBは1000バイト?1024バイト? | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

ギガバイト表記をめぐる集団訴訟、まもなく終結へ @ CNET Japan


この2つは今のところどちらも正しい表現とされています。

簡単に言えば人間側から見れば1KBは1000バイト(10進法)であり、コンピュータ側から見れば1024バイト(2進法)となっています。


コンピュータの世界は2つの情報(0 or 1)しか持ち合わせていない世界です。

自分の家の電気を操作するのは、電気をつける(ON)か電気を消す(OFF)かのどちらかであるように。

何故かと言うとかなり込み入った話になりますが、ON(ある)かOFF(なし)の2つの情報というのは、情報を保持する上でもっともシンプルな構造のためです。

本当(真)か嘘(偽)か、勝ちか負けか、生か死か、進むか戻るか、右か左か。

人間の世界でもこの2つの情報判断と言うのはもっとも単純な選択肢となっています。

コンピュータは突き詰めれば極めて低俗な計算しかできませんので、その2つの情報を繰り返し与え計算させる事で複雑な計算をできるようにしています。

それを幾千・幾億と重ねて人間が分かる情報に仕立てています。


ですのでコンピュータの中の世界では、1KBは1024バイト単位が正しくなります。

Windowsを使っている場合は、少し大きめのファイルのプロパティを開いてみれば、よくわかります。

プロパティのサイズ欄には、XXKBと書かれており、そのすぐ横の括弧内にバイトでの容量が表示されています。

これを1024で割ればKB単位と一致するはずです。

(ファイルの大きさがMBである場合は、1048576(1024×1024)で割る)


話をややこしくしているのは、このK(キロ )という単位です。

キロという単位は、国際単位系で10の3乗倍と定義されています。

1キログラムは、1グラムの1000倍であるように。

つまり、1キロバイトは1バイトの1000倍であるというのは、国際単位系に沿った表現になります。


このキロという単位をコンピュータの世界に持ち込んだときに、1024バイトが1000バイトとして扱われるようになりました。

バイト単位で扱っていても問題にはなりませんが、コンピュータのデータ容量が肥大化していくにつれて、この

バイト単位だけでデータを扱うのは流石に無理が出てきます。

1MBを1048576バイトと毎回言うのは流石に人間には分かりにくいものです。

そこで、国際単位系を用いて表現しようという事になったわけですが、1000バイト(10の3乗)が1024(2の10乗)として扱われたのは、その2つの数字にさほど差が無いからです。

1MBでも、1000000と1048576で、差は48576バイトだけとなっています。


しかしながら、この単位が大きく(GB、TB)となっていくにつれて差は大きく開いていきます。

そこで、最初に紹介したエントリの問題が出てきているわけですね。


その2つの差を明確にするために、コンピュータ側の単位(1KB = 1024B)はキビバイト (KiB)と表現するという定義があるようですが、あまり浸透していません。

(MBはメビバイト(MiB)、GBはギビバイト(GiB)、TBはテビバイト(TiB))

まぁ、この定義があるわけですから、1KBは1000バイトが正しいということになるわけなんですが、そもそもあまり浸透していないことからこういった問題が浮上してくるんでしょうね。