データ量の各単位とは
バイト B
1 バイトは 8 ビットですが、いつもそう決まっていたわけではありません。初期の計算機は 6 ビット、7 ビット、9 ビットを使っていました。8 が勝ったのは、そこに 1 文字が収まり、しかもその数がきれいに半分ずつ割れるからです。
キロバイト kB
1 キロバイトは、標準化団体が定義すれば 1,000 バイトで、OS が定義すれば 1,024 バイトです。このページは 1,000 で計算します。1,024 のほうはキビバイトという名前を持っています。
メガバイト MB
1 メガバイトは 100 万バイトです。記憶装置のメーカーは昔から十進で数えてきました。だからその数字は、コンピューターが表示する数より大きく見えます。
ギガバイト GB
1 ギガバイトは 10 億バイトです。ディスクのメーカー、通信のデータ容量、動画のサイズが使っているのと同じ十進の意味です。
テラバイト TB
1 テラバイトは 1 兆バイト、つまり 10¹² です。1 TB として売られるディスクにはきっちりそれだけ入っています。足りなく見えるのは単位の食い違いであって、不足ではありません。
キビバイト KiB
1 キビバイトはちょうど 1,024 バイトです。この名前は 1998 年に、「キロバイト」に 1,000 の意味を返してやるために導入されました。もっとも、定着したとは言いがたい状況です。
メビバイト MiB
1 メビバイトは 1,024 キビバイト、つまり 1,048,576 バイトです。Linux のツールとメモリーの数値は、表示が「MB」であってもほぼ常にこちらを指しています。
ギビバイト GiB
1 ギビバイトは 1,073,741,824 バイトで、ギガバイトより 7 % ほど大きい値です。Windows はギビバイトで測りながら、それを「GB」と表示します。「容量が足りない気がする」という疑問のからくりは、まるごとこれです。
テビバイト TiB
1 テビバイトは 1,024 ギビバイトです。テラバイトとの隔たりは階段を上がるごとに開いていきます。キロで 2.4 %、メガで 4.9 %、ギガで 7.4 %、テラで 10 %。
データ量の単位一覧
データ量の各単位 1 を基本単位で表した値。丸めた係数ではなく定義に基づきます。| データ量 | バイト (B) |
|---|
| 1 B | 1 |
|---|
| 1 kB | 1000 |
|---|
| 1 MB | 1000000 |
|---|
| 1 GB | 1000000000 |
|---|
| 1 TB | 1000000000000 |
|---|
| 1 KiB | 1024 |
|---|
| 1 MiB | 1048576 |
|---|
| 1 GiB | 1073741824 |
|---|
| 1 TiB | 1099511627780 |
|---|
よく使われるデータ量の換算について
gbからmbへ
「入るかどうか」を決める千という係数
このページは 1,000 で割ります。kilo、mega、giga は 10 の 3 乗、6 乗、9 乗を意味する SI 接頭辞で、キロメートルやメガワットと同じ意味をバイトにも当てはめると 1,000、1,000,000、1,000,000,000 になります。これはハードディスクメーカー、あらゆる通信規格、携帯電話の料金プラン、サービス自身が使う意味です。
対抗する体系は 1,024 の累乗で、キビバイト、メビバイト、ギビバイトと呼ばれます。多くのデスクトップ OS が実際に数えているのはこちらで、印刷される文字がどうであれそうです。2 つの体系はそれぞれの内部では正しく、間違いはどちらを読んでいるか気づかずに数字とファイルサイズの上限を比べることです。
bytesからgbへ
その大きな数字はどこから来たのか
正確なバイト数は、丸めることを拒む道具から出てきます。コマンドラインの stat、クラウドストレージのサイズ欄、ダウンロードの Content-Length ヘッダー、テーブルの容量を尋ねたデータベースの返答。どれも読みやすさを目指していません。ファイルシステムが実際に持っている数字をそのまま返すので、10 桁や 11 桁になり、一目では読めません。
その正確さこそが、ここから出発する理由です。バイト数がファイルそのものであり、それ以外のどんな表記も丸められた翻訳です。バイトから変換すれば、食い違いの手前に立つことになり、答えはあなたが下した判断であって、ファイル管理ソフトがすでに下した判断ではありません。
bytesからgibへ
生のバイト数は 2 つのシステムが一致できる唯一の数字
ソフトウェアがサイズをバイトで報告するのは意図的なことです。バイト数には解釈すべき接頭辞も、巻き戻すべき丸めも、ロケールもありません。だからこそメトリクスやログ、API のレスポンスを、Gという文字を何倍と読むか誰も合意しないまま比較できます。この性質こそが、その数字を読みにくくしている原因でもあります。17,179,869,184 という数字は、何かで割るまで何も伝えてくれません。
割る数は、周囲のシステムが 2 進法なのかによって決まります。メモリー、ページキャッシュ、ファイルシステムの使用量など OS 系のカウンターはほぼすべて 2 進法なので、1,073,741,824 で割ります。これはちょうど 16 GiB です。10 億で割ってしまうと 17.18 になり、元の数字がきれいな 2 のべき乗だったという、いちばん有益な手がかりを隠してしまいます。
bytesからkbへ
まだ 1 バイトずつ数えられる大きさです
1 メガバイトを下回るうちは、バイト数そのものがまだ読める大きさです。誰も 27,504 バイトを理解できないから KB に変換するのではありません。比較したい相手——アセットの予算、フォームの上限、誰かが「30 KB」と言っていた別のファイル——がすべて KB で語られているから変換するのです。この変換は、その会話が使っている単位への翻訳です。
だからこそ、この規模では小数の精度が安く手に入ります。小数点第 1 位は 100 バイトを、第 2 位は 10 バイトを表すので、27.5 KB も 27.50 KB もどちらも正直な表記であり、後者は水増しではありません。もっと大きな桁では余分な数字は意味を失いますが、この規模では 0.1 KB が実際にファイルから削れる量に相当します。
bytesからkibへ
KiB は 1000 ではなく 1024 で割ります
キビバイト(KiB)は 2 進数の世界の単位で、1 KiB は正確に 1,024 バイトです。1000 で割る「キロバイト(KB)」とは別物で、この 2 つを混同すると小さな量では気づかないほどのずれですが、大きな量になると無視できなくなります。
1998 年に国際電気標準会議(IEC)が KiB・MiB・GiB という表記を導入したのは、まさにこの混同を解消するためでした。ソフトウェアやファイルシステムは内部的に 2 の累乗(1024、1,048,576……)で計算しているため、KiB という表記のほうが実態に正直です。
bytesからmbへ
なぜ機械はまずバイトで返すのか
表示より下のすべての層が実際に数えているのはバイトです。書式指定なしのディレクトリー一覧、stat 呼び出しの st_size フィールド、Content-Length ヘッダー、オブジェクトストレージの一覧の size 属性、ログの行が持つ長さのフィールド。すべて整数のバイト数で、この分野で方言を持たない唯一の単位だからです。
API が 5242880 を返せば曖昧さのない事実を伝えていますが、「5.24 MB」を返せば注釈が必要な何かを伝えています。変換はあなたの仕事の最後にすべきことで、そうすることで正確な数字を必要なだけ長く手元に残せます。