はじめに
会社で会話していたところ
『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年も前なのですね。ただ、あまり知られてないようで冒頭の質問となりました。この際なのでおぼえておきましょう。