- 計算機是如何工作的:人人都能懂的計算機軟硬件工作原理
- (美)馬修·賈斯蒂斯
- 1021字
- 2024-04-25 18:07:35
1.5 前綴
表示復雜的數據類型需要大量的位。像數字99這樣簡單的對象只需要一個字節,而數字格式的視頻則可能需要數十億位。為了更易于表示數據的大小,我們使用了諸如G和M之類的前綴。國際單位制(SI)也被稱為公制,定義了一組標準前綴。這些前綴用于描述可以被量化的對象,并不僅限于位。在后面關于電路的章節中,我們還會看到它們。表1-2列出了一些常見的SI前綴及其含義。
表1-2 常見SI前綴

(續)

有了這些前綴,如果我們想說“30億字節”,就可以用縮寫3GB表示。或者,如果我們想表示4000位,我們就可以說4kb。注意,B代表字節,b代表位。
你會發現這種約定一般用于表示位和字節的數量,可惜的是,這在技術上通常也是不正確的。其原因在于:在處理字節時,大多數軟件實際是以2為基數的,而不是以10為基數,如果計算機告訴你文件的大小為1MB,那么它實際有1048576字節!這約等于106,但不完全等于。看起來像是個奇怪的數,不是嗎?這是因為我們是按十進制來看的。在二進制中,同樣的數字表示為0b100000000000000000000,它是220。表1-3展示了在處理字節時如何解釋SI前綴。
表1-3 SI前綴應用于字節時的含義

位和字節另一個會混淆的地方和網絡傳輸速率有關。互聯網服務提供商通常以每秒位數作為單位,基數為10。因此,如果互聯網連接傳輸速率為50Mb/s,那么就意味著每秒只能傳送大約6MB數據。也就是說,每秒50000000位,除以每字節8位,得到每秒6250000字節,用6250000除以220,得到每秒大約6MB。
二進制數據的SI前綴
為了解決由前綴多義性導致的混亂,2002年引入了一組新的前綴(在IEEE 1541標準中)用于二進制場景。當處理2的冪時,Ki用于代替K,Mi用于代替M,以此類推。這些新的前綴對應于以2為基數的值,用于之前不正確使用舊前綴的場合。例如,由于KB可能被解釋為1000或1024個字節,因此這個標準就建議使用KiB來表示1024個字節,而KB則保留其原始意義,即KB等于1000個字節[1]。
這看上去是個好主意,但是直到撰寫本書的時候,這些符號還未得到廣泛使用。表1-4列出了新的前綴及其含義。
表1-4 IEEE 1541-2002二進制數據的前綴

這個差異很重要,因為在實踐中,大多數軟件在顯示文件大小的時候使用的是舊的SI前綴,但在計算大小的時候卻是以2為基數的。換句話說,如果你的設備說一個文件的大小是1KB,那么它的意思是說有1024字節。此外,存儲設備制造商在為它們的設備容量打廣告的時候,則傾向于以10為基數來表示容量大小。這就意味著,廣告宣稱為1TB的硬盤可能包含1012字節,但是當你把它連接到計算機時,則會顯示其容量大約為931GB(1012除以230)。由于新前綴使用率不高,因此本書將繼續使用舊的SI前綴。