データ容量変換

データ容量を 10 進系と 2 進系で同時に表示 — KB と KiB、MB と MiB を並べて。ビット、正確なバイト数、各 OS の表示も。

正確なバイト数
1,000,000,000,000
10 進系
1000 の累乗 — SI、ドライブメーカー、macOS
  • B1,000,000,000,000
  • KB1,000,000,000
  • MB1,000,000
  • GB1,000
  • TB1
2 進系
1024 の累乗 — IEC、Windows、RAM
  • KiB976,562,500
  • MiB953,674.3164
  • GiB931.3226
ビット
1000 の累乗 — ネットワーク速度は常に 10 進系
  • bit8,000,000,000,000
  • Kb8,000,000,000
  • Mb8,000,000
  • Gb8,000
  • Tb8
各ツールでの表示のされ方

同じバイト数の 5 通りの読み方です。どれも誤りではなく、除数・ラベル・その両方で食い違っているだけです。

  • Windows エクスプローラー — 1024 で割り、10 進系のラベルを保つ931 GB
  • macOS Finder — 1000 で割る1 TB
  • ls -lh、du -h — 1024 で割る932G
  • ls --si、du --si — 1000 で割る1.0T
  • ドライブ・USB メーカー — 1000 で割る1 TB

このツールの役割

サイズを任意の単位で入力してください — 1 TB、1536 MiB、900 Mb、あるいはファイル一覧からコピーした素のバイト数だけ — すると、両方の単位系に同時に変換されて返ってきます。正確なバイト数と、お使いのマシンの各ツールがそれをどう報告するかも一緒に。

二つの系はトグルの裏ではなく並べて示されます。データサイズの難しさのすべては、両方が使われていて両方が自分を同じ名前で呼ぶことだからです。単独の数は、どちらがそれを生んだかを教えません。

なぜキロバイトに二つの意味があるのか

コンピューターはメモリを 2 の累乗で番地付けするので、1024 は 1000 が決してならないふうにマシンにとって自然な丸い数です。早くに「キロ」が 1024 に借りられました。SI の千に十分近く、二つが離れていくとは誰も思わなかったからです。二つは離れていきました。

誤差は下端では小さく、各段階で複利で増えます。キロバイトで 2.4%、メガバイトで 4.9%、ギガバイトで 7.4%、テラバイトで 10% 異なります。ペタバイトまでには二つの答えが 12.6% 離れ、もはや丸めの詳細ではありません:

KB    1,000                 KiB    1,024                 # 2.4% の差
MB    1,000,000             MiB    1,048,576             # 4.9%
GB    1,000,000,000         GiB    1,073,741,824         # 7.4%
TB    1,000,000,000,000     TiB    1,099,511,627,776     # 10.0%

1998 年に IEC は 1024 の累乗に独自の名前 — キビバイト、メビバイト、ギビバイト、そして KiB、MiB、GiB の記号 — を与えました。まさに曖昧さを書いて消せるようにです。名前は日常の使用では定着しませんでしたが、記号は定着し、KiB とラベル付けされたものは曖昧でありません。KB とラベル付けされたものは今も曖昧です。

誰がどちらの数え方をするか

分かれ方はでたらめではありません。おおよそ、番地付けされるハードウェアと売られるハードウェアの間の線に沿って落ちます:

  • RAM は常に 2 進系です。16 GB のメモリモジュールは 16 GiB です。メモリは 2 進の行と列で番地付けされ、望んでも丸い 10 進数にはなれないからです。
  • ドライブは常に 10 進系です。1 TB のディスクを売るメーカーは 1,000,000,000,000 バイトを意味し、誰かがそれについて文句を言うずっと前からそうです。
  • Windows は 2 進系ですが 10 進系のラベルを使います。1024 で割って GB と書き、そこから人が実際に経験する混乱のほとんどが来ます。
  • macOS は 2009 年の Snow Leopard 以来 10 進系です。Windows で 931 GB と読める同じドライブが Mac では 1 TB と読め、どちらのマシンも壊れていません。
  • Linux のコマンドラインツールは両方を与えます: ls -lh と du -h は 1024 で割り、同じコマンドの --si フラグは 1000 で割ります。
  • ネットワークは常に 10 進系で、バイトではなくビットを数えます。

931 GB と表示される 1 TB のドライブ

これはデータサイズについての単一で最もよくある質問で、答えは、失われた容量はないということです。ドライブは箱が言ったものをちょうど保持します。Windows がただ、それらのバイトを 1000 ではなく 1024 で三回割り、それから違うことを言うラベルを表示するだけです。

1,000,000,000,000 バイト        # メーカーが売ったもの
/ 1024 = 976,562,500 KB         # Windows が一度割る
/ 1024 = 953,674.32 MB          # 二度
/ 1024 = 931.32 GB              # 三度、それから GB とラベル付け

ドライブは広告より小さくなく、OS はバイト数について嘘をついていません。誤っている唯一のものはラベルです: Windows が 931 GB と呼ぶものは本当は 931 GiB で、931 GiB は 1 TB です。どんなサイズもこのツールに貼り付ければ、二つの列がその関係を直接示します。

ビットとバイト、そして 8 の因子

1 バイトは 8 ビットで、二つは書くうえでたった一文字の大小でしか区別されません: 大文字の B はバイト、小文字の b はビットを意味します。Mb と MB は 8 の因子で異なり、計算を無意味にするのに十分すぎます。

これが最も重要なのはネットワーク速度で、ビット毎秒で表される一方、ファイルサイズとダウンロードの進捗はバイトです。100 Mb/s の接続はせいぜい 12.5 MB/s で動くので、1 GB のファイルは、数が約束するように見える 10 秒ではなく約 80 秒かかります。何かがあなたを絞っているのではありません。単位が初めから同じでなかったのです。

ここではビットは 10 進系でのみ示され、それは単純化ではありません。ネットワーク速度は 10 の累乗で定義されるので、メガビットはその語が使われるどこでも 100 万ビットです。IEC は 2 進のビット単位も定義しますが、本質的に何もそれを使わず、提供すれば誰も意味しない変換を招くでしょう。

なぜここの数が正確なのか

JavaScript の数は、整数を正確に保持するのは約 9000 兆 — 2^53 — までです。エクサバイトは 10^18 でそれをはるかに超えるので、ふつうの計算で作られた変換器は、大きなストレージの問題が住むまさにそこで桁を失い始め、最後の数桁が自信満々に誤ったバイト数を報告します。

ここではすべてが代わりに任意精度の整数を使います。それはあまり明白でない何かも買います: 関わるすべての因子が 10 の累乗か 2 の累乗で、両方がある 10 の累乗を割り切るので、これらの単位間のすべての変換が有限の小数として終わります。1 TB はおよそ 931.32 GiB ではなく — 931.322574615478515625 GiB で、余りは何もありません。ここの行は読むために丸められ、その上のバイト数が答えのすべてです。

よくある質問

キロバイトは 1000 バイトですか 1024 バイトですか?
両方で、誰が数えるかによります。SI とドライブメーカーは 1000 を、Windows と RAM のサイズは 1024 を使います。IEC は 1024 の単位を別に名付け — キビバイト、メビバイト、ギビバイト — 曖昧さを取り除きますが、古いラベルは今もいたるところにあります。このツールは一つを選ぶのではなく、両方の読みを一度に示します。
私の 1 TB のドライブが 931 GB しか示さないのはなぜですか?
失われたものはありません。メーカーは 1,000,000,000,000 バイトを、1000 の累乗で数えてあなたに売りました。Windows はそれを 1024 で三回割り、931.32 を得て、その結果を GB とラベル付けします。同じバイト、異なる除数、誤解を招くラベル — それが示しているのは本当は 931 GiB です。
MB と MiB の違いは何ですか?
メガバイトは 1,000,000 バイト、メビバイトは 1,048,576 バイトなので、MiB は約 4.9% 大きいです。MiB は定義上曖昧でありません。MB は、それを表示したツールがどの慣習に従うかを知っている場合にのみ曖昧でありません。
ダウンロードが接続速度より遅いのはなぜですか?
たいてい二つが異なる単位で測られるからです。接続速度はメガビット毎秒で、ダウンロードはメガバイト毎秒で表され、1 バイトに 8 ビットあります。100 Mb/s の回線は約 12.5 MB/s で頭打ちになります。
私のホスティングやアップロードの上限 25 MB は実際に何を意味しますか?
サービスにより、安全な仮定は小さいほうの数です。上限が 25 × 1,000,000 バイトとして課されるなら、25 MiB をわずかに下回るファイルは拒否されます。ここでファイルサイズを両方の列に変換すると、両方の読みを越えるかがすぐ分かります。
とても大きなサイズも扱えますか?
はい。計算は任意精度の整数を使うので、エクサバイト・ゼタバイト・ヨタバイトも、ふつうの浮動小数点数が 2^53 を超えて最後の桁を失うようにではなく、正確に変換されます。
入力した内容はサーバーに送られますか?
いいえ。ブラウザ内での計算です。何もアップロードも記録もされず、ネットワーク接続なしで動きます。