1キロバイトは何バイトか


アニメ『キリングバイツ』

獣同士のバトル。細かいことは何も考えずに見られるアニメです。主人公の女子高生はラーテルというイタチ科の動物の獣人なのですが、このラーテルは、体は小さいのに、ライオンにも立ち向かう、怖いもの知らずの動物らしいです。怖いものだらけの私としては、見習いたい動物です。

さて今回はバイツ(Bites)つながりでバイト(Byte)です。
以前職場のベテランが新人を試すため、1キロバイトは何バイトなのか質問してました。新人は1000バイトと答え、ベテランはその答えを聞くやいなや、1024に決まってるだろ、勉強不足だぞっ! と新人さんの心が粉々になるまで叱り続けてました。(恐そうなベテランなので、私に伝染して質問が飛んでこないことをビクビク祈ってました)

どっちが正解なんでしょうか。分かりやすさなのか ストレージなどの容量は1キロ=1000バイトで表すことが多いと思いますが、プログラミングの現場で1024単位が使われているのも事実。国際単位系(SI)では、1K=1000が定められてますし、どちらでも合ってると言えるのでしょうけど、どちらにしても決めつけているベテランさんは勉強不足でしたね。

さて、linuxのコマンドは、どちらの単位で容量を表示してくれるでしょう。

takk@deb9:~$ dd if=/dev/zero of=1000.img bs=1000 count=1
1+0 レコード入力
1+0 レコード出力
1000 bytes (1.0 kB) copied, 0.00059637 s, 1.7 MB/s
takk@deb9:~$ dd if=/dev/zero of=1024.img bs=1024 count=1
1+0 レコード入力
1+0 レコード出力
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.000587211 s, 1.7 MB/s
takk@deb9:~$ 

ddコマンドの表示では、1000バイトも1kBとなってます。さらに1024バイトの場合、1KiBという単位でも表示されています。Kiという単位は国際単位系で定められているので、ddコマンドはなかなか優秀ですね。

takk@deb9:~$ ls
1000.img  1024.img
takk@deb9:~$

では比較用のファイルが出来上がりましたので、その他のコマンドでも確認しましょう。

takk@deb9:~$ man ls
~省略~
       -h,  --human-readable       -l や -s と併せて使用したときに、人間が読み
       やすい形式でサイズを表示する (例: 1K 234M 2G)
~省略~

lsコマンドには、人間が読みやすい形式で単位をつけて表示してくれるオプションがありますので、これを使って各ファイルのサイズにKがつくか確認してみましょう。

takk@deb9:~$ ls -lh *
-rw-r--r-- 1 takk takk 1000  1月 21 18:41 1000.img
-rw-r--r-- 1 takk takk 1.0K  1月 21 18:42 1024.img
takk@deb9:~$

1024バイトの方は、1.0Kと表示されましたが、1000バイトのファイルは1000と表示されています。

次はduコマンドです。同じく–human-readableオプションがあるので省略形の-hをつけて、さらにこのままでは下のようにディスク使用量を表示してしまいます。

takk@deb9:~$ du -h *
4.0K    1000.img
4.0K    1024.img
takk@deb9:~$

実際のサイズを表示するため、–apparent-sizeをつけて実行します。

takk@deb9:~$ du -h --apparent-size *
1000    1000.img
1.0K    1024.img
takk@deb9:~$

こちらもlsと同じく1K=1024ですね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA