首頁 遊戲資訊 數位技術科普系列四:字節的...

數位技術科普系列四:字節的奧秘

在數碼產品中,最常見的名詞就是「字節」了。不管是U盤容量、手機存儲空間,還是網絡帶寬,下載速度,都會涉及所謂「字節」這個單位。但到底「字節」是一個什麼東西呢?本章就為你說明這個問題。

陰陽八卦和十個手指頭

假如人類是四趾動物

數碼產品與數學的關聯非常深,而數學又是由數字組成的學問,所以我們現在數字開始說。在世界上,所有民族的數字「單位」幾乎都是一樣的,就是分為十個數字:一、二、三、四、五、六、七、八、九、十。許多人平時可能都不會去考慮,為何我們的數字會是十個,而不是七個,或者八個呢?事實上,如果人類和米老鼠一樣是四個手指;或者人類是從鳥類進化來的「鳥人」,擁有四個指頭,那麼這個世界上的數字也許就只有從一到八了。因為原始人類社會中,由於每個人有十個手指,因此在使用數字的時候,最小的一組數字單位就正好用一個人的全部手指來充當。這樣作為最小的一組數字,造成了數字的進位就以十為基礎。所以十進位,僅僅是和使用數字的人,習慣使用的算術工具有關系而已;而數字本身,是可以用任意的「進位」的。

數位技術科普系列四:字節的奧秘

洞悉本質的老子

數字是可以用「任意進位」的,如果我們要「發明」一種:「數字」最少的計算方法,可以最少只用幾個數字了?答案是「二」。對於計算機來說,它們天生都是「兩趾」的:電壓分高、低;磁極分南、北;電流有通、斷,所以二進位是現在計算機的基礎進位。也就是說,只要有 0 和 1 兩個數字,就可以表達世界上一切數目。這個觀點乍一聽有點不可思議:既然我們可以只用兩個數字就可以了,為何還要發明出另外八個數字呢?其實中國人的先哲中,有一位早就說明這個道理,他就是老子,他寫道:道生一、一生二,二生三,三生萬物。意思大概是陰陽兩種事物,可以組合表達出萬事萬物。所以在八卦的圖形上,陰陽表達為橫線,中間有斷開的是陰,沒斷開的是陽。

八卦則由三根這種代表陰陽的橫線組成,不同的八種三根橫線的組合,構成了八個不同的含義。這八個卦象,人們認為可以表達萬事萬物。在二進位來說,我們可以看成陰是 0,陽是 1,這樣 3 位二進位數,剛好能容納 0-7 一共 8 個數字。對於這樣的二進位數,每條橫線是一個數字單位,成為「位」,英文是 「bit」。比如表達十進位里面的 7,需要用三個二進位數表達:1,1,1 (陽陽陽),這里就是用了三個「位」的二進位數。如果你要表達更大的數目,就需要用更多的「位」。我們現在數碼科技中使用的最小信息單位,也就是「位」。而「字節」(英文叫 「byte」),則是由八個「位」組合成的另外一個單位。

數位技術科普系列四:字節的奧秘

最小信號盒子

在第一章中,我們講過,世界上所有的信息都能用數字來表達。我們的數字又是用最小數字的方法——二進位來構成的,所以當需要說明一串用來表達信息的數字,它們有多大的時候,我們可以說這串數字有多少個「位」。如 「1000100111111110」 這串二進位數(可能表達的是兩個英文字母,也可能是小於 65535 的一個正整數),我們通過數一下他的長度,就可以說它有 16 「位」的長度。但是 16 位這麼長的數,才表達兩個字符或一個六萬五以內整數,顯得不太好理解,所以我們一般較少直接用「位」這個最小的數碼單位,而是用另外一個更容易理解的單位——「字節」。

由於每八個「位」可表達一個拉丁文的字符(拉丁字母表才幾十個字,漢字就不行了),所以我們就喜歡把八個「位」看成一個單位「字節」,說一段數字有多少個字節,就表示這段數字能表達多少個「字」(英文字)。盡管數字可表達的內容不止是文字,但是「字節」還是因為人們覺得「形象」而成為數字信息的單位。我們可以把每個「字節」看成一個小小的數字「盒子」,里面可以放八個 「0」、「1」 數字,計算機就可以這樣以一個個的「數字盒子」來處理信息了。假如有一個盒子里面沒裝滿,一般就把空位(高位)填上 0。

現在我們用的電腦、手機,幾乎都是以字節為單位處理信息的,所以購買電腦、手機產品時、標簽上的標記的單位,如 16Gbytes, 256G bytes 都用 bytes 字節做單位。但是通信帶寬,還是習慣用 bit 「位」位單位,如 100Mbit/S(網卡速度)、12Mbit/S(ADSL帶寬)。有時候我們會奇怪:明明寫著帶寬是 12M /秒,為什麼下載速度只有 1M /秒了?其實是因為兩個計算的單位不一樣,帶寬的標記單位是「位」,12Mbit/ 秒其實等於 1.5Mbyte /秒,所以下載速度最多是一點幾 M 「字節」每秒。電腦上顯示的基本都是 byte 字節為單位的嘛。早期的電視遊戲卡帶,號稱 16M 大容量的遊戲,卻可以拷貝到 2 張3.5寸軟盤(1.44M容量)中,也是這個道理,因為卡帶的容量單位是「位」,而軟盤的容量單位是「字節」,16Mbit 僅僅只有 2Mbyte 而已,2 張軟盤綽綽有餘了。

KMGT

容量和速度的單位

在各種各樣的數碼產品中,一般都會有兩個指標:一是速度,一是容量。以U盤為例,會寫「256M」,這個指的是容量,意思是它可以存放 256M 個字節的這麼長數字。其中 M 是一個數學單位,是英文的「百萬」 million 的縮寫,256M 就是 256×1,000,000 個字節的數字。除了 M,我們還常見到 K,G,T 等縮寫,K 是 kilo,也就是「千」的意思,1000K=1M,G 是 1000 個 M,T 是1000 個G。現在好多硬碟的容量都有幾個 T,對比最早的 40M 容量的硬碟,大了幾百萬倍。說回 U 盤,我們常會以容量來表示他的特性,但是其實還有一個速度的指標。在U盤上我們細心點看標簽,有些會寫上 「USB2.0」 或 「USB3.0」,這個就是表示速度的指標(其實也不僅僅是速度這麼簡單,一個設備的制式涵蓋的內容比較多,但 U 盤里影響比較大的是速度)。

USB2.0 標準,表示電腦可以以每秒 30M 個字節的速度,與 U 盤傳輸數據。標準越高,傳輸的速度越快,我們需要等待往 U 盤讀寫文件的哦時間就越短。硬碟、記憶體和U盤類似,都有一個容量的指標和速度的指標。另外一些硬體如網卡,指標主要就是速度,如 100Mbit/S,意思就是網卡每秒能傳輸 10×1,000,000個位(不是字節)。有趣的是,顯示卡的主要指標往往是容量,因為卡上的顯示記憶體越大,顯示的速度就越快,現在帶有幾個 G bytes 的顯卡很常見。最後說說 CPU,一般我們認為 CPU 只有速度指標,如 33MHz,就是每秒運算 33×1,000,000次。其實CPU也有容量,我們現在有 32 位CPU,還有 64 位CPU,早期的 CPU 還有 8 位,16 位的,這個「位」數就是指,每次運算能處理多長位數的數字。8 位二進位最大就是 0~255,如果程序要計算大於 255 的整數,就需要多次運算。早期 16 位遊戲機里,常常用 65535 作為一個數的最大值,比如殺死最終 BOSS 獲得經驗值就是 65535 點,這樣設計可以最好的利用其 16 位 CPU;但是現在大部分 32 位、64 位 CPU 的電腦里,計算 65535 還是 655350 都只需要一個計算周期,就沒必要把數字限制到 65535 以內了。(當然以前的遊戲縮小數字范圍還有考慮減少卡帶容量的因素)除了 CPU 的「位」數,CPU 往往還帶有二級緩存、三級緩存,這些緩存就是存放數據的臨時空間,越大越有利於速度提高,所以 CPU 指標上也有這些緩存的容量指標。

1M 有多大

剛剛我們提到了 K\M\G\T 這些縮寫,但是這些字眼並不能給我們直觀的認識——這些數據說代表的規模。我們可以先以文字來看,每 1M 字節的容量能存放 1 百萬字的英文文章,這里的「字」是字母而非單詞。對於中文來說,一般需要兩個字節來表達一個漢字,所以1M Byte 能存放五十萬字的漢語文章。《水滸傳》大概五十六萬字,在電腦里,一張薄薄的軟盤就可以放下了。如果你用光碟(CD-ROM),一般的光碟都有 700M Bytes 的容量,可以存放 50 萬 x700,大概三億五千萬字的文章,而《永樂大典》的字數也只有 3.7 億字而已。《四庫全書》號稱世界上字數最多的書,大概有 10 億個漢字,4 張普通光碟,或者一張 DVD 基本就能裝下。你看,1M 是不是很「大」?

但是,如果你用 1M 空間存放圖片,就會發現 1M 太小了,因為一張彩色照片,假如是 1024X768 個點組成(這個解析度是老式顯示器的),而每個點按 256 種顏色來繪制(256 色幾乎是卡通畫的色彩才能這麼少),那麼一張照片就會占用 1024x768x256 個字節,大概 2.4M,1M 空間連一張質量很差的照片都放不下。所以,數據容量的大小不是絕對的,而是看說存放的內容來頂頂哦。事實上,1M 空間是可以存放更多的內容的,辦法就是針對存放的數據,使用不同的「數字魔法」——壓縮算法,從而使同樣的 1M 空間,可以存放五百萬字的文章,或者十張彩色圖片,又或者 1 分鍾的音樂。節省空間的壓縮,要付出 CPU 計算時間為代價,這就是計算機世界的時空交換原則:你要節省空間,就要付出時間,反之亦然。程序中的所有優化,在相同硬體的情況下,一般都是按使用需求靈活平衡時間和空間而得到的結果。下一章,我們就會討論可以讓數字信息進行時空變化的方法——各種有用的算法。

來源:機核