硬碟容量用十進位不以二進制為底的1024進位,這問題已是常識了,但是存儲廠商這麼標反而是符合標準。可能有些朋友在Linux和macOS中見過,容量單位的兩個大寫字母中插進一個i,比如KiB、MiB、GiB這樣的單位,那麼它和我們常說的KB、MB和GB有什麼區別呢?
KB代表國際單位制標準規定的1000進位,KiB這類中間帶個"i"的是1024進位法的標準寫法。Windows使用1024進位,但是沒有按照標準寫,Linux和macOS等很多其他系統使用1000進位,並且按照規範寫了。Kb這類代表1000進位,計量單位為bit而不是byte的單位,常見於描述帶寬和媒體碼率。
還是要扯到二進制與十進制身上:
在國際通用的國際單位制標準(SI)中,對於一個單位的倍數和分數,有著詳細的定義。比如對於赫茲這一用於描述頻率的導出單位,1000倍時可以稱為千赫茲(kHz),1000000(百萬)倍時,稱為兆赫茲(MHz),再往上以1000倍跳就是吉赫茲(GHz)、太赫茲(THz)……(注意,標準中代表“千”的字母k必須為小寫)
而這些放在單位名之前的字母,其實都是一些代表數量的單詞的首字母,比如k是kilo,M是mega,G是giga……這些詞代表的數有一個特徵——它們都是以10為底數的冪。
然而到了計算機工業中,在底層的硬件電路中,通用的是二進制,基於十進制的國際單位制對它沒用,反而會帶來麻煩。為了方便描述以2為底的大數字冪,工程師們聯合了起來,由國際電工委員會(IEC)制定了新的用於1024進位的數字前綴,其實就是將原本對應單詞中的最後兩位改成了"bi",以代表二進制(binary),而對應的縮寫,也從原本的單字母變成了附上"i",比如kB變成KiB,MB變成MiB,全稱為kibibytes,mebibytes。
但因為這套標准在1998年才提出,雖然馬上寫入了ISO標準中,但當時Windows都已經出Windows 98了,所以並沒能很好的統一整個計算機業界,很多系統和廠商仍然保持了1 KB=1024 Bytes的表示方式,並沒有附上"i"。內存方面的JEDEC標準也仍然我行我素,採用了與Windows一樣的表示方法,所以我們今天在內存上看到的GB、MB等單位都是1024進位的。而硬盤存儲業界,仍然使用1 KB=1000 Bytes的國際單位制標準對容量進行描述。
再來看到B的大小寫區別這個老生常談的話題上,大寫B指的是byte即字節,小寫b指的是bit即比特,1 byte = 8 bits。常見使用bit而不是byte來描述的量就是比特率了,比如1000 kb/s,或者寫成1000 kbps的形式,都是一樣的。而在描述通信帶寬的時候也往往會使用bit,比如現在的千兆局域網、百兆光寬帶就是1000Mbps、100Mbps而不是1000MB/s、100MB/s,而我們實際看到的文件傳輸速度使用的是byte來描述,兩者有一個八倍的換算關係。
而同樣在這裡,國際單位制佔據了統治的地位,這些使用bit作為單位的量,大部分採用的都是1000進位而不是1024進位,所以在換算的時候還要考慮到這個因素,於是,我們在Windows下能夠看到的百兆寬帶最大的理論速度就變成了:
100 Mb/s = 100 × 1000 × 1000 = 100,000,000 b/s
100,000,000 b/s = 12,500,000 B/s = 12,207.03125 KiB/s = 11.92 MiB/s
同理,因為Windows並不遵守規範,所以這個最終顯示給你的數字是11.92MB/s,但切記,這不是正確的表示方法。
來源
謝謝收看
留言列表