はじめに

会社で会話していたところ

『KiB/MiB/GiBって何?』

という質問があったのでいい機会ということでブログにもしておきます。それぞれ

キビバイト/メビバイト/ギビバイト

と読みます。ちなみにEC2の料金表のメモリサイズもGiBで表示されてますね。

2進接頭辞(binary prefix)

2進接頭辞で検索すると説明がいろいろ出てきます。

英語版のWikiから読み方を転載します。

10進と2進の接頭語
SI接頭語(10進) 2進接頭辞
SI IEC
1000 10^3 k kilo 1024 2^10 Ki kibi
1000^2 10^6 M mega 1024^2 2^20 Mi mebi
1000^3 10^9 G giga 1024^3 2^30 Gi gibi
1000^4 10^12 T tera 1024^4 2^40 Ti tebi
1000^5 10^15 P peta 1024^5 2^50 Pi pebi
1000^6 10^18 E exa 1024^6 2^60 Ei exbi
1000^7 10^21 Z zetta 1024^7 2^70 Zi zebi
1000^8 10^24 Y yotta 1024^8 2^80 Yi yobi
1000^9 10^27 R ronna 1024^9 2^90
1000^10 10^30 Q quetta 1024^10 2^100

余談 1

ronna(ロンナ 1000^9 )、quetta(クエッタ 1000^10) が2022年に定義されたとのことでした。日本語のWikiにはそれに対応する2進接頭辞が書いてあったのですが、英語版にはありませんでした。定義場所が追えなかったためこちらの表にはかいていないです。

余談 2

世界で生成されているデータ量はいろいろなところで書かれてて数字がぶれているのですが、ここを例にとると2023年だと120ゼータバイトくらいとのことでした。だいたい年率20%くらいで増えているそうです。あたらしく接頭辞を用意したくなる気持もわかりますね。

余談 3

10進のSI接頭語のkは小文字が正しいとのことです(18世紀末、フランス革命後に決まったとのこと)。

なぜ存在するのか?

コンピュータの処理の単位はbitで、2進数となります。10bit が 2^10 = 1024 で1000に近いことから 1KB を1000だったり1024であつかう場合が昔からよくあります。1KBの場合は誤差は2%程度ですが、これがMBになると4%、TBになると10%程度ずれてきます。指数関数やばい。

そこで、IECが1998年に2進接頭辞を定めたとなります。もう25年も前なのですね。ただ、あまり知られてないようで冒頭の質問となりました。この際なのでおぼえておきましょう。