mixiユーザー(id:26118346)

2021年03月17日18:50

44 view

1kBは1000バイトか?

【当日記は少しだけオタが入っておりますが難しい話しではありません。PCやスマホを使う人はちょっと知っておいた方が良いお話しです。】

PCやハードディスク(HDDまたはSSD)を買うとディスク容量について以下のような記載をよく見かけます。SDカードでも同様な内容です。
-------------------------------------------------------------------
1kB(バイト)は1024Bとして表示しています。
従って1kB=1000Bでの計算だと容量が異なることがあります。

(或いは上記が逆の順序で書かれている)
-------------------------------------------------------------------
↑これってしつこいくらいに見ますが、しかしなぜなの?という理由は
まず書かれていません。
何となくコンピュータは2進数で処理するのでその関係では?くらいに思って
いましたが、どうしても気になり調べることにしました。
でも明確な答えがネットでもなかなか見つかりません。

さらに話しが複雑になりそうなのが8bit=1Bで表すというコンピュータの
基本単位の問題もありますね。

なぜだろう?だってまずbit(ビット)自体は2進数の最小単位であるので、その後わざわざ2のべき乗に変換する必要があるのか? 

2進数の単位をさらに2進数の計算に無理やりぶち込むって、まるでガソリンや酒の税金2重課税と同じでは?なんでそんな意味不明なことを?

1024は2進数を元に計算すると2の10乗の解なんだけど、なぜに10乗なの?
と疑問は尽きません。

調べていくとどうやらこの1024B説は諸説あるようですが、一番有力なのはデタラメ説のようでした。

【結論から言うと1kB=1000Bで計算、表記するのが正しい。】

のです。
最初にこうなったのがいつなのか?誰が言い出したのかまでは判らないのですが、
コンピュータは2進数で処理する、という話しがどんどん独り歩きしだしてk=10^3
であるにも関わらずご丁寧にわざわざ2進数の計算をして1000に近い数字を見つけ出した、という事のようです。

だから1000という数字に無理に近づけるための整数のべき乗が10となり、その結果1024Bになってしまったんです。

では2進数でもぴったり1000になるようなべき乗値を選べばよいのでは?
ということになりますが、ニアリーイコールですが以下のようにも出来ます。

2^9.966=1000.149533657332・・・・

でもこれ↑ダメなんです。
このべき乗は【必ず整数である】必要があるのです。
コンピュータなんだから処理できる範囲の桁数で良いじゃないか!となりますが、
記憶容量の部分はデータバスの本数(チップ内部も含め)などのハードウェアで決まります。

つまり電線の本数なので9本や10本はいいけど、9.966本の電線なんていうのは
ダメという事です。

こんなおかしなこと言わずに素直に1kB=1000Bとしておけばよかったんですね。
さらに「8bit=1Bで表す」に関しては絶対にこの表記、計算でなければならない、
という決まりも無いようで、こちらの方は今回の話題では無視されているようです。

今や大手のPC/デバイスメーカでも1024Bを併記していますが、
【本来書いてはいけない】
ものなんです。

その証拠に国際単位系(SI)第8版(2006年)国際文書日本語版 に、
これについての記述があります。
-----------------------------------------------------------
これらの SI 接頭語は 10 の整数乗を表す.
それらを決して2のべき乗を表すために用いてはならない
(例えば,1キロビットは 1000 ビットであり,1024 ビットではない)
------------------------------------------------------------
当然のことなんですが、あくまでもk(キロ)は10の3乗を表す単位ですので
守りましょう、ということです。

あとオマケですが、10の3乗=1000を表す単位のキロは小文字のkであって
大文字で書いてはいけません。
大文字だと絶対温度を表すケルビンになるからです。
でも多くの書籍や記事で間違えていますけどね。Kmとかも間違いです。

2 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する