KiB を MiB に変換

KiB
0.0009765625MiB

1 KiB = 0.0009765625 MiB

値を入力すると、キビバイトからメビバイトへの計算が入力に合わせてその場で進みます。1 KiB あたり 0.0009765625 MiB.この比は測って求めたものではなく、定義で決まっています。計算はお使いの端末の中で行われ、入力した数字が通信に乗ることはありません。ただし、そのまわりのページのほうは、ほかのどのページとも同じように広告を読み込みます。

  • 処理される場所 ブラウザーの中です。入力した数値がリクエストに含まれることはありません。
  • 定義として厳密 1KiBはちょうど0.0009765625MiBです。丸めた係数ではなく、定義です。
  • 入力と同時に答えが出ます ボタンも待ち時間もありません。計算例はスクリプトが動く前からページに載っています。

キビバイトからメビバイトへ — 実際のところ

  • 512 KiB is 0.5 MiB

    — 半メビバイト.

  • 4 KiB is 0.003906 MiB

    — ほとんどのシステムでのメモリーページ 1 枚.

  • 716800 KiB is 700 MiB

    — 音楽 CD 1 枚、あの数字の出どころ.

  • 8192 KiB is 8 MiB

    — プログラムが確保するメモリーのひと区画.

キビバイトからメビバイトへ — 要点

ここに並ぶ数値は、上の計算機と同じ定義から計算しています。だから表が答えとずれることはありません。
KiBMiB
100.009765625
200.01953125
500.048828125
1000.09765625
5000.48828125
10000.9765625
50004.8828125
100009.765625

キビバイトとメビバイト

1 キビバイトはちょうど 1,024 バイトです。この名前は 1998 年に、「キロバイト」に 1,000 の意味を返してやるために導入されました。もっとも、定着したとは言いがたい状況です。

1 メビバイトは 1,024 キビバイト、つまり 1,048,576 バイトです。Linux のツールとメモリーの数値は、表示が「MB」であってもほぼ常にこちらを指しています。

メビバイト 1 つを作るのにキビバイトが 1,024 必要です

こちら向きの計算は割り算で、しかも整数で割り切れます。1,024 単位が余りなく メビバイト 1 つに収まります。不便なのは、結果が分数で出てくることだけです——3 分の 1、12 分の 1——逆向きなら得られる、きりのよい整数の代わりに。

それでも丸めで失われるものはありません。割り算が割り切れるからです。結果が小数で収まらない場合——0.0833… のような——それは分数が顔を出しているのであって、誤差が入り込んでいるのではありません。

KiBは二進の単位です

KiB 1 つはひとつ下の単位の 1,024 倍で、kB 1 つは 1,000 倍です。このページでは 0.001 MiB と 0.001 MiB の差——2.4 %——になり、段を上がるごとにこの隔たりは開いていきます。写真 1 枚では丸め誤差でしかないものが、ハードディスクでは目に見える割合になるのはそのためです。

「容量が消えた」という話の中身は、これだけです。kB で売られたディスクには、書いてあるとおりのバイト数が入っています。それを 1,000 ではなく 1,024 で割り、名前は kB のまま表示しているのが Windows です。macOS は 10.6 以降ディスクの容量を十進の単位で数えているので、同じディスクが 2 台のパソコンで違う大きさに見えることがあります。減ったものはなく、丸めているのでもありません。同じバイト数に、名前が 2 つあるだけです。

キビバイトの数字はたいていファイルサイズではなくブロック数です

この数字を生み出したコマンドのほうが、そのあとの算術より重要です。GNU duは1,024バイト単位で確保済みディスクブロックを数えるので、du -sk build/は「コンテンツが何バイトあるか」ではなく「ファイルシステムのどれだけが確保されているか」に答えています。ls -lはコンテンツのバイト数のほうを報告し、この二つは同じディレクトリに対して何倍も違うことが日常的にあります。

これはMiBの数字が判断に使われる瞬間に重要になります。tarballやコンテナイメージのレイヤー、アップロードのクォータのサイズを決めるのはコンテンツについての問いであり、見かけ上のサイズを求めています。パーティションのサイズを決めたりボリュームがいっぱいになった理由を調べたりするのは確保についての問いであり、duが表示したものを求めています。間違ったほうをMiBに換算すると、算術としては完璧でも量として的外れな答えが出ます。statコマンドは単一ファイルについてこれを解決してくれます。Sizeの行はバイト単位の長さ、Blocksの行はファイルシステムが何を使っていようと512バイト単位で数えた確保量で、後者を半分にするとキビバイトになります。二つが1ブロック以上食い違っていたら、そのファイルはスパースであるかファイルシステムが圧縮しています。

kibiとmebiは1998年に古い論争を終わらせるために作られました

この接頭辞は造語です。kilobinaryがkibiに、megabinaryがmebiに、gigabinaryがgibiになりました。IECは1998年にIEC 60027-2の改訂としてこれを採用し、IEEEは2002年にIEEE 1541でこれを支持し、今はISO/IEC 80000-13に収められています。狙いは「キロバイト」があらゆる文脈で1,000バイトという意味に戻れるようにし、二進法の意味には固有の名前を与えることでした。

普及は片方だけ進んで止まりました。LinuxやBSDのツール、多くの規格文書、いくつかのハイパーバイザー、Kubernetesは全てIEC接頭辞を使っています。ストレージのマーケティング、Windows、macOSのユーザー向け表示、多くのプログラミング言語のドキュメントは一度も使いませんでした。この分裂こそが、画面上のキビバイトの数字がほぼ確実にUnix系ツールから来ていて、同じ量が別の場所にあったらどちらの意味かを知る術がないままKBとラベル付けされていた理由です。

GNUツールは大文字のKを印字して1,024を意味します

du -h、ls -lh、df -h、free -hはどれもデフォルトで2のべき乗を使い、iの付かない一文字の接尾辞——K、M、G——を印字します。--siフラグを付けると同じツールが10のべき乗に切り替わり、小文字のkを印字します。この一文字の大文字小文字だけが唯一の手がかりであり、チケットに貼り付けられたスクリーンショットの中では見えなくなります。

だから3.5Mと表示されたリストは3.5 MiB、つまり3,670,016バイトであり、これをメガバイトだと仮定して何かに渡すと4.9パーセント少なく見積もることになります。数字が実行するためではなく引用されるために使われるなら、du -B1やls -lで生のバイト数を得ると読みにくくなる代わりに誤解の余地がなくなります。ls -l --block-size=Kやdu --block-size=Kは出力の中で単位を明示してくれるので、チケットやランブックに貼り付けられる可能性がある出力ではこの余分なタイピングをする価値があります。

小さなファイル1万個と、縮まないキビバイトの合計

ファイルシステムはブロック単位で容量を渡します。デフォルトのブロックサイズはext4、XFS、NTFSどれも4 KiBで、これはx86-64のメモリページサイズと一致していて、それは偶然ではありません。200バイトのファイルは1ブロックを占有し、4,096バイトのファイルも同様で、4,097バイトのファイルは2ブロックを占有します。この無駄な余りはスラックと呼ばれ、ディレクトリの合計をMiBに換算して予想の何倍もの数字が出てくるまで見えません。

この算術は一度やっておく価値があります。平均200バイトのファイル1万個はコンテンツとしてはおよそ2 MiBですが、ディスク上では40,960 KiB、つまり40 MiBを占有します。du --apparent-size -skはコンテンツの数字を報告し、素のdu -skは確保された数字を報告します。node_modulesツリーやMaildirはこの差が最悪の形で現れる場所です。

1,024での除算は正確で、それはよくあることではありません

1キビバイトは2の10乗バイト、1メビバイトは2の20乗バイトなので、両者の間の移動は10ビットのシフトです。どんなKiBの値も小数で終端するMiBの値に換算されます——1 KiBは0.0009765625 MiBで、丸めも循環小数もなく完全に書き出せます。1,024は2以外の素因数を持たないため、10進小数はちょうどそうした分母のときに終端するからです。

これは単位換算の中で、浮動小数点の結果を無条件に信頼できる珍しい一角です。2の43乗未満のどんなKiBの値も、分子と分母がどちらも2のべき乗で指数がそのシフトを吸収するため、ビットを一つも失うことなく倍精度浮動小数点数として1,024で割れます。キログラムをポンドに変換する計算はそう主張できませんが、これは主張できます。

du -skとdu -shを同じディレクトリで並べて読む

du -skはキビバイトのそのままの整数を、du -shは丸められた人間向けの文字列を返します。丸められた形は読むためのもので、整数は計算するためのものです。この二つを取り違えると、容量のスプレッドシートがどこか一行が明らかに間違っているようには見えないまま数パーセントずれてしまいます。丸められた出力はせいぜい有効数字三桁しか持っておらず、1.1Gはおよそ50 MiB未満のすべての情報を捨てています。

実務上の習慣は、KiBで収集し最後に整形することです。du -sk | sort -nは正しくソートされますが、du -sh | sort -hはソート側にも-hフラグが必要で、それがないと1.1Gが9.9Mより上に来るような静かな誤順序が起こります。人が読むタイミングになって初めてMiBに換算してください。それより前ではありません。

キビバイトを求めていてそのままにしておくべきフィールド

Linuxシステムのいくつかの場所は定義上KiBで数えられていて、MiBの数字は使う前に戻す必要があります。ulimit -sはキビバイト単位のスタック上限で、よく見る値は8192です。ディスククォータは1 KiBブロックで設定・報告されます。tmpfsマウントのsize=オプションはこの中の落とし穴です。カーネルのドキュメントによれば裸の数字はバイトを意味するので、size=65536はキビバイトで数えていた人が期待した64 MiBではなく64 KiBになります。k、m、gを付けて意図を明示してください。/proc/meminfoのほとんどすべての行はkBというラベルの付いたキビバイトで、例外はHugePages_で始まる行で、これらは単位のないページ数です。

目的地がこうしたフィールドの一つであるなら、有用な方向はむしろ逆で、ここでの換算は設定のためではなく読み取りのためのものです。8192が8メガバイトではなく8メビバイトであることを確認するためにMiBの数字を計算し、それからキビバイトの数字をそのままフィールドに戻してください。

KiB を MiB に変換:よくある質問

1 KiB は何 MiB ですか。

1 KiB は 0.0009765625 MiB.画面に出しているのは有効数字 12 桁までです。キビバイトとメビバイトの比そのものは定義によって決まっている厳密な値で、丸めが入るのは表示のところだけです。

入力した値はどこかへ送られますか。

いいえ。計算はブラウザーの中で行われます。通信を切ったままでも計算は続けられますし、それがいちばん手軽な確かめ方でもあります。

買ったディスクの容量が、書いてある数より少なく表示されるのはなぜですか。

同じ名前の単位が 2 つ動いているからです。メーカーは 1 GB を 1,000,000,000 バイト(10 億バイト)として数えます。一方 Windows が表示しているのはギビバイト、つまり 1,073,741,824 バイトで、それを「GB」と呼んでいます。同じディスクが 7 パーセントほど小さく見えるのはこのためです。消えたものは何もありません。

逆方向:メビバイトからキビバイトへ

1MiBは1024KiBです。同じ関係を逆から読んだだけなので、一方のページの答えをもう一方に通せば、必ず元の値に戻ります。

この数値の出典

このページがデータ量の単位について述べていることは検証できます。根拠となる資料は次のとおりです。

このページの仕組み

係数はページ内の定数で、計算は四則演算だけです。だからどこにも送信されませんし、送信する必要もありません。入力した数値はブラウザーから出ません。運ぶためのリクエストが存在しないからです。