正文

數(shù)據(jù)壓縮——有益無害(5)

改變未來的九大算法 作者:(美)約翰·麥考密克


第136頁的表格給出了一個完整列表,列出了計算機(jī)也許想存儲的100個符號以及每個符號對應(yīng)的兩位數(shù)代碼。順便說一下,這個特別的兩位數(shù)代碼集并沒有在任何現(xiàn)實計算機(jī)系統(tǒng)使用,但與現(xiàn)實生活中使用的代碼相當(dāng)相似。兩者的主要區(qū)別是,計算機(jī)并不使用人類使用的十進(jìn)制數(shù)系統(tǒng)。相反,也許你知道,計算機(jī)使用一個不同的數(shù)位系統(tǒng),這個系統(tǒng)被稱為二進(jìn)制系統(tǒng)。不過,這些細(xì)節(jié)對我們來說并不重要。更短符號壓縮把戲同時對十進(jìn)制和二進(jìn)制數(shù)系統(tǒng)奏效,因此我們假裝計算機(jī)使用十進(jìn)制,以使接下來的解釋更容易。

仔細(xì)看看這張符號表。

注意表的第一項給出了字與字之間空格的數(shù)

原注:答案是字母A重復(fù)251次。字代碼“00”。接下來是從A(“01”)到Z(“26”)的大寫字母,以及從a(“27”)到z(“52”)的小寫字母。再接下來是標(biāo)點符號,最后一欄中收錄了一些書寫非英語單詞用到的字符,從á(“80”)到ù(“99”)。

那么計算機(jī)該如何使用這些兩位數(shù)代碼存儲“Meet your .ancé there”(去那見你的未婚夫)這句話呢?很簡單:只要將每個字符翻譯成對應(yīng)的數(shù)字代碼并串聯(lián)在一起:

M e e t y o u r f i a n c é t h e r e .

13 31 31 46 00 51 41 47 44 00 32 35 27 40 29 82 00 46 34 31 44 31 66

在計算機(jī)中,數(shù)字對之間是沒有間隔的,認(rèn)識到這一點很重要。因此,這條消息實際上被存儲為一個46位數(shù)的持續(xù)字符串:“1331314600514147440032352740298200463431443166”。當(dāng)然,人類解讀這個字符串有點難,但對計算機(jī)來說卻輕而易舉。在將數(shù)字翻譯成字符顯示在屏幕上之前,計算機(jī)能輕易將數(shù)字分成對。關(guān)鍵是在如何分開數(shù)字代碼上沒有歧義,因為每個代碼都只是用兩個數(shù)字。事實上,這也是A用“01”而不是“1”代表的原因。同理,B是“02”而不是“2”,一直到字母I(“09”而不是“9”)。如果我們選擇讓A=“1”,B=“2”,依此類推,根本就不可能清楚地翻譯消息。比如,消息“1123”可以拆成“1 1 23”(翻譯為AAW),或“11 2 3”(KBC)或“1 1 2 3”(AABC)。因此,請記住這一重要思想:數(shù)字碼和字符之間的翻譯必須清楚無異議,即便代碼在沒有空格的情況下彼此相鄰地存儲。我們馬上就要為這個問題感到頭痛!


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號