什麼都沒有消失
插入一個標籤上寫著「1 TB」的硬碟,大多數操作系統會顯示大約 931 GB。沒有任何容量實際上消失了。該硬碟包含標籤所說的確切容量,「丟失」的 69 GB 完全是同一物理字節數上應用兩個不同的千位、百萬位、十億位和兆位前綴定義的產物。
兩個前綴系統,相同的名稱,不同的含義
| 十進制(SI 風格) | 值 | 二進制(IEC) | 值 |
|---|---|---|---|
| 千字節 (kB) | 1,000 字節 (103) | 千二進制字節 (KiB) | 1,024 字節 (210) |
| 兆字節 (MB) | 1,000,000 字節 (106) | 兆二進制字節 (MiB) | 1,048,576 字節 (220) |
| 十億字節 (GB) | 1,000,000,000 字節 (109) | 十億二進制字節 (GiB) | 1,073,741,824 字節 (230) |
| 兆字節 (TB) | 1,000,000,000,000 字節 (1012) | 兆二進制字節 (TiB) | 1,099,511,627,776 字節 (240) |
存儲設備製造商使用十進制列,並且早在區別有分別的名稱之前就已經這樣做了,因為這使得宣傳容量成為整數,並符合其他所有行業如何使用「千」和「百萬」。標籤上標記為 1 TB 的硬碟確實包含 1,000,000,000,000 字節。
確切的算術
使用二進制除法計算「GB」的操作系統(仍然是 Windows 檔案總管的默認行為)會將硬碟的實際字節數除以 1,024 的冪,同時繼續打印標籤「GB」而不是正確的「GiB」:
1×1012 字節 ÷ 230 字節/GiB = 1,000,000,000,000 ÷ 1,073,741,824 = 931.32… GiB
那個數字 931.32 是二進制除法操作系統顯示的內容,錯誤地標籤為「GB」。格式化或開銷中沒有丟失任何內容。它是相同的 1,000,000,000,000 字節,除以比製造商使用的更大的除數,並為結果給出了錯誤的單位名稱。
兩名稱系統的來源
歧義已經很老了。「千字節」從計算的早期開始就被寬鬆地用於 1,000 和 1,024 字節兩者,因為 210 (1,024) 足夠接近 103 (1,000),這種草率在小規模上很少產生問題。一旦容量達到十億字節範圍,這種做法就停止了無害,其中兩個定義相差 7.4%,在兆字節範圍內,它們相差近 10%。1998 年 12 月,國際電工委員會批准了對 IEC 60027-2 的修訂 2,引入了 kibi-、mebi-、gibi- 和 tebi- 二進制前綴,特別是為了通過為二進制數量提供它們自己的明確名稱來結束歧義,同時讓千位、百萬位和十億位嚴格意味著 1,000 的冪,就像它們在計量學中的其他地方一樣。該標準後來被納入 IEC 80000-13 (2008),這是涵蓋信息科學和技術的國際數量體系的一部分,仍然是兩組前綴的當前權威。
採納是可選的,這表明了
標準機構可以定義正確的名稱;他們無法強制操作系統使用它們。Apple 在 2009 年使用 Mac OS X 10.6「Snow Leopard」將 macOS 切換為基於十進制的報告 —— 1 TB 硬碟在 Finder 中顯示為「1 TB」,與製造商的標籤相符,因為 Finder 現在按 1,000 的冪除法。Windows 從未進行等效的切換:檔案總管仍然按 1,024 的冪除法,同時打印標籤「GB」,這就是為什麼同一物理硬碟根據插入的操作系統顯示不同的數字。Linux 按工具而不是按設計不一致 —— 許多命令行實用程序(如不帶 --si 標誌的 ls -lh 和 du -h)默認為二進制除法,而幾個桌面檔案管理器默認為十進制,正確標籤。
RAM 是二進制不僅僅是標籤選擇的唯一地方
存儲容量是製造決定;原則上,硬碟控制器可以構建為暴露任何字節數。RAM 容量不是:內存芯片通過二進制地址線進行物理定址,因此芯片的容量在架構上是 2 的冪。一個「8 GB」RAM 模塊確實包含 8 × 1,073,741,824 = 8,589,934,592 字節,按正確名稱為 8 GiB,而「8 GB」閃存驅動器包含 8 × 1,000,000,000 = 8,000,000,000 字節。相同的打印標籤,兩個不同的物理數量,出於兩個不同的基礎原因:一個是硬件約束,另一個是製造商選擇的單位慣例。
網絡速度是比特,不是字節
另一個前綴陷阱就在這一旁邊:網絡速度以每秒比特為單位報價,文件大小以字節為單位。由於一個字節是 8 比特,一個廣告為 1 Gbps 的連接在協議開銷之前最高可達約 125 MB/s 的文件傳輸速度,而不是 1,000 MB/s,也不是 1 GB/s。將廣告鏈接速度除以 8 以估計實際文件傳輸吞吐量可以解決「連接快速」和「下載速度慢」之間的大部分困惑。
沒有一致地使用兩個定義的唯一格式
3.5 英寸「1.44 MB」軟盤是異常的,這是一個真正有益的案例,而不是腳注。其實際格式化容量為 1,474,560 字節。那個數字既不是 1.44 × 1,000,000 (1,440,000,十進制讀數),也不是 1.44 × 1,048,576 (1,509,949,二進制讀數)。它是 1.44 × 1,024 × 1,000:一個混合體,其中「千」被讀作二進制 1,024,匹配內存和磁盤磁區的實際尋址方式,但「百萬」隨後被讀作該已經二進制的千字節的十進制 1,000 倍數。IEC 二進制慣例和普通 SI 十進制慣例都不描述它;該格式先於 1998 年的標準化工作和隨著多千兆字節硬碟而來的營銷壓力,並且它使用了滿足任何人的單位定義。
快速檢查任何廣告大小的一種方法
如果一個數字被用來描述硬件容量,您可以以二進制單位進行物理計算,例如 RAM 或閃存芯片尺寸,期望它是 2 的乾淨冪,因此無論使用哪個前綴系統都是相同的。如果它描述製造或配置到整數十進制目標的東西,存儲硬碟、雲存儲層、帶寬津貼,期望「丟失」百分比在操作系統以二進制除法、錯誤標籤的單位報告它時出現。