はじめに
知ってしまえばどうということはない話だった。突き詰めれば KB と KiB の違い。ファイルサイズやディスクの使用サイズ、空き容量などを調べるとみかけるこれらの表記。大した違いじゃないだろうと思ってたものの、地味に気にはなっていた。
今回、古いディスクのパーティション分割やフォーマットの機会があったので、ついでに調べてみた。
身近にあった例が表題の件。思い返せば、128 GB のUSBメモリを買ったのに、サイズが 119 GiB と表示されたのにもびっくりした記憶。
予備知識
GBはさておきKBから。
KBはキロバイト、KiBはキビバイトと読む。違うのは読み方だけでなく、定義も違うし、具体的なバイト数も異なる。
1 KB = 1000 B = 10^3 B(10の3乗バイト)
1 KiB = 1024 B = 2^10 B(2の10乗バイト)
前者のKは10進数が基準のSI接頭語であり慣れ親しんだ表現だけど、後者は2進接頭語を用いた表現であり馴染みが薄い。これまであまり気にしてなかったけど、それぞれ1000倍、1024倍して接頭語が1段階上がるたびに差が広がっていく。大して変わらないだろうと軽視してると、ギガを超えたあたりで痛い目を見る。(というか見た)
よく知られているように、10進数が基準のSI接頭語の世界では1000倍していくごとにキロ=K、メガ=M、ギガ=G、テラ=Tといった略記号が用いられる。1MBは1000KBで、1TBは1000GBだ。一方、2進接頭語の世界ではこれに対応する形で1024倍していく。それが KiB=キビバイト、MiB=メビバイト、GiB=ギビバイト、TiB=テビバイト。
1 MiB = 1,024 KiB
= 1,024 * 1,024 Byte
= 1,048,576 Byte
1 GiB = 1,024 MiB
= 1,024 * 1,024 * 1,024 バイト
= 1,073,741,824 バイト
1 TiB = 1,024 GiB
= 1,024 * 1,024 * 1,024 * 1,024 バイト
= 1,099,511,627,776 バイト
これらを SI接頭語を用いて表すなら
1 MiB ≒ 1,048 KB
> 1 MB
1 GiB ≒ 1,073 MB
> 1GB
1 TiB ≒ 1,099 GB
>> 1TB
となる。1TiBと1TBの差は99GB、実に1割近くもあり、目を疑う。
メモリのサイズが思ってたのと違うけど
以上が日常で見かけるデータサイズやディスク容量の表記に対する違和感の正体。そして冒頭でも触れた例のように、USBメモリのサイズが買った時とPCに差して見たときとで
16 GB → 14.4 GiB
128 GB → 119.2 GiB
となってびっくりしたり、騙されたor損した気分になるのもそういうこと(実際にはファイルシステムやOSが管理領域を確保したりするので、空き容量はもっと小さい)。
しかしこれはUSBメモリ等の商品パッケージの誤表記ではない。くどいようだが 16GiB や 128GiB という表記じゃないのは定義上違うから当然だし、GBとGiBとでは実際の差が無視できないくらい大きいので、なおさら当然。よく見るとわかるが128GBのメモリはちゃんと
128 GB = 128,000,000,000 Byte
分の容量はある。(大抵はこれよりも少し多めに作ってあるようだ)。
もしこの 128GB を 128 GiB と同一視しちゃうと嘘になっちゃう。
128 GiB = 128 * 1024 * 1024 * 1024 Byte
= 137,438,953,472
≒ 137 GB
※実際には128GBのものを137GBのものとして売るわけにはいかない。
そしてこの手の混乱がもたらされた結果、例えば、実際は 120GiB のデータなのに「120GB のデータだよ」と言われてもらったものが 128GBのUSBメモリ(総容量 119.2 GiB)に入らなかったりするのもこういうこと。
定義を知ってしまえば当たり前のことだけど、要するにこういうことだ。
1 KiB > 1 KB
1 MiB > 1 MB
1 GiB > 1 GB
1 TiB >> 1 TB
...
同程度のオーダーで生じる差異
接頭語の定義の違いは分かったけど、個人的に知りたいのは1バイト単位での正確な数値なのだった。(パーティションを正確に切りたかったので)。欲しい一覧が意外とすぐに見つからなかったので、計算してまとめた。
パーティション分割に使う fdisk
コマンドは +1G とサイズ指定したときに GiB で計算してくれる。今回作った一覧で確認できた。他の接頭語も同様。期待した方の仕様で良かった。
なお、Y=ヨタやYiB=ヨビバイトの上の接頭語は2022年11月に決まるらしい。奇遇にもホットな話題だったので、先行して書いておいた。確定でないので ? を付けてある
※SI接頭語は 10^(3*n), 2進接頭語は 2^(10*n) のようにも書けるが比較しやすいようにした。
SI接頭語 | べき表記(SI) | 2進接頭語 | べき表記(2進) | バイト数(2進接頭語表記の場合) | 差(2進 - SI) | ||
---|---|---|---|---|---|---|---|
1 | 1000^0 | 1 | 1024^0 | 1 | 0 | ||
k | 1000^1 | KiB | 1024^1 | 1,024 | 24 | ||
M | 1000^2 | MiB | 1024^2 | 1,048,576 | 48,576 | ||
G | 1000^3 | GiB | 1024^3 | 1,073,741,824 | 73,741,824 | ||
T | 1000^4 | TiB | 1024^4 | 1,099,511,627,776 | 99,511,627,776 | ||
P | 1000^5 | PiB | 1024^5 | 1,125,899,906,842,624 | 125,899,906,842,624 | ||
E | 1000^6 | EiB | 1024^6 | 1,152,921,504,606,846,976 | 152,921,504,606,846,976 | ||
Z | 1000^7 | ZiB | 1024^7 | 1,180,591,620,717,411,303,424 | 180,591,620,717,411,303,424 | ||
Y | 1000^8 | YiB | 1024^8 | 1,208,925,819,614,629,174,706,176 | 208,925,819,614,629,174,706,176 | ||
R? | 1000^9 | RiB? | 1024^9 | 1,237,940,039,285,380,274,899,124,224 | 237,940,039,285,380,274,899,124,224 | ||
Q? | 1000^10 | QiB? | 1024^10 | 1,267,650,600,228,229,401,496,703,205,376 | 267,650,600,228,229,401,496,703,205,376 |
kBとKiBの間では誤差は2.4%程度だけどTBとTiBになると9.9%で約1割に拡大する。さらにその約1テラ倍に相当するYBとYiBになると2割に拡大する。
読み方
2進接頭語の記号は「●iB」という表記だけど、読み方は「●ィビバイト」とは限らないらしい。身近なKiBは「キビバイト」、GiBは「ギビバイト」だけど、MiBはミビバイトではなく「メビバイト」、TiBはティビバイトやチビバイトではなく「テビバイト」と読むとのこと。SI接頭語の発音を知ってたら類推しやすいというのがまた悩ましい。
k M G T P E Z Y R? Q?
Kilo Mega Giga Tera Peta Exa Zetta Yotta Ronna? Quetta?
KiB MiB GiB TiB PiB EiB ZiB YiB RiB? QiB?
Kibibyte Mebi- Gibi Tebi Pebi Exbi Zebi Yobi Robi? Quebi?
ただやはり、そのうちMiBをミビバイト、TiBをティビバイトとか読み始めて混乱しそう。
TiBはチビバイトじゃないぞって思い出そう。
大文字と小文字の区別
実はキロバイトは正しくはkBと表記するのが正しいのだとか。そういえばkgとかkmとかは確かにそう。でも「キロバイト」のかな漢字変換で「KB」が出たりと、世の中的にも混乱している。WindowsとかURLとか、大文字小文字を区別しない文化もあるから、ありがちな自然か。
大文字小文字の区別といえば、Bはバイトでbはビット。1バイト=8ビット=2^3ビットでバイトの考え方自体が2進数由来なわけだけど、にもかかわらず以前から1KBなどと言っていた頃から既にまかれていた混乱の種が、大容量の時代に芽吹いたということか。
おわりに
GBやGiB、TBやTiB、もっと大きなオーダーの略記号を見かけたら、どちらの意味なのか注意しよう。違いは大きい。身近な単位で大雑把に言うと、
1 MiB = 1.05 MB
100 MiB = 105 MB
1 GiB = 1.07 GB
100 GiB = 107 GB <----- 7GB !
1 TiB = 1.10 TB = 1100 GB <--- 100GB !!
なのだ。
そしてできればGiBやTiBを使う方が良いだろう。
参考資料