データ容量変換
データ容量を 10 進系と 2 進系で同時に表示 — KB と KiB、MB と MiB を並べて。ビット、正確なバイト数、各 OS の表示も。
1,000,000,000,000B1,000,000,000,000KB1,000,000,000MB1,000,000GB1,000TB1
KiB976,562,500MiB≈ 953,674.3164GiB≈ 931.3226
bit8,000,000,000,000Kb8,000,000,000Mb8,000,000Gb8,000Tb8
同じバイト数の 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 を超えて最後の桁を失うようにではなく、正確に変換されます。
- 入力した内容はサーバーに送られますか?
- いいえ。ブラウザ内での計算です。何もアップロードも記録もされず、ネットワーク接続なしで動きます。