當前位置:歷史故事大全網 - 歷史上的今天 - 文件是如何壓縮的?

文件是如何壓縮的?

說到壓縮,大家都會想到WINZIP或者RAR之類的壓縮軟件。事實上,計算機壓縮技術的內涵和應用從未止步於此。我們可以在電腦上欣賞優美的電影和甜美的歌曲,壓縮技術功不可沒。在互聯網的傳輸速度遠遠不能滿足我們需求的今天,網絡壓縮技術顯得尤為重要。正是有了它,我們才能實現網絡視頻/音頻的實時傳輸。壓縮技術正在不知不覺中改變著我們的生活。

預備知識二進制和ASCII編碼

計算機的基本存儲單位是字節。ASCII碼是以字節為單位對常用符號進行編碼的方案,因其合理性而廣受歡迎。因為壹個字節有8位,所以ASCII最多可以編碼2 ^ 8 = 256個字符,其中前128稱為標準ASCII碼(二進制數00000000-01111165438)後165438稱為擴展ASCII碼(二進制數10000008比如漢字“王”占用的兩個ASCII碼分別是205和245,十六進制表示是CD和F5,二進制表示是111101和1165438。也就是說,當計算機處理漢字“王”時,計算機中的信息是“1101111165438+”。再比如大寫英文字母“A”的ASCII碼是65,十六進制表示是41。電腦裏的信息其實是“0100001”。

收縮壓縮

知道了上面的原理之後,我們再來介紹壹下“收縮壓縮”的原理。“縮寫”是為了減少編碼中不必要的“比特”。例如,文件中沒有漢字,這意味著內容中沒有使用擴展ASCII碼,因此所有字符碼的第七位(第壹位)將為0。利用這個,我們可以收縮這個位,假設文件內容是ABCDEFGH。

文件內容:ABCDEFGH

二進制內容:0100000100010000110001000100065438。1000111 01001000

壓縮文件內容:[中文顯示的內容有亂碼,無法寫入]

二進制內容:10000100010100011100065438+。

這個壓縮過程就是把原來頭上的全零去掉,每8個比特重新排列,這樣原來占8個字節的文件只占了7個字節。只要在解壓縮時添加第七位0,就可以將文件恢復到原來的狀態。這種壓縮技術特別適用於數字壓縮。因為從0到9這十個阿拉伯數字所占用的ASCII碼是從00110000-0011001,前四位都是“0011”。

單純受壓

直接壓縮的原理是最容易理解的,因為有時候,文件中不可避免的會有連續的字符,比如在文件末尾加壹行“※ ※ ※ ※ ※ ※ ※”。這樣壓縮的時候只需要記住這個符號和重復的次數,就可以快速還原。

字典壓縮

字典壓縮是最重要的壓縮技術,也是應用最廣泛的壓縮技術。該技術在文件中搜索重復的字符串,如“中華人民共和國”、“改革開放”,記錄後(記錄的內容稱為“詞典”),在文本中用另壹個短碼替換。想想在Windows系統中填充了多少個字符“Windows”和“Microsoft”,妳就會明白為什麽這種壓縮技術對Windows操作系統如此有效。這種壓縮方案特別適用於政治手稿和學術論文。

字典壓縮技術對於文本文件和可執行代碼文件同樣有效,並且可以涵蓋“直接壓縮”技術。現在流行的壓縮軟件如ZIP、ARJ、RAR和AIN都采用了這種技術。但是,在這項技術中,合適的字典長度非常重要。字典設置過大或過小都會嚴重影響壓縮效果,壓縮速度相對較慢。

大多數壓縮軟件綜合使用了各種壓縮技術。

向量壓縮

盡管字典壓縮功能強大,但它不能對某些文件內容做任何事情,例如:

啊,冰雹,玻璃,長摸,丹錠法

其實這幾個看似不成文的漢字有著內在的聯系。分別是GB2312中的1601、1702、1803、1904、2005和2106。在這種情況下,可以通過尋找它們之間的數學關系(如級數、方程等)來進行內存壓縮。)這種內存壓縮稱為矢量壓縮,是壹種新興的壓縮技術。

矢量壓縮有時候能給我們帶來意想不到的享受。很多人都很驚訝FLASH能在這麽小的體積裏給我們帶來這麽多的信息,因為FLASH中使用了矢量壓縮技術。用方程記憶壹個點的軌跡,比記憶這個點的所有位置要少得多。另壹方面,目前的矢量化技術還不能從照片和錄音中找到壹個高保真、有規律的方案,所以下壹步的壓縮技術還有施展的空間。

有損壓縮和VCD

VCD的出現歸功於聯合圖像專家組(JPEG)的努力。他們提出了壹個全新的壓縮技術標準,也可以說是壹個全新的壓縮概念。這個概念催化了MPEG標準的誕生和VCD產業化的實現。JPEG圖像壓縮技術以圖像的每8*8個點的點陣為壹個處理單位。在這個範圍內,如果全部是某壹種顏色,只有少數幾種其他顏色,那麽其他顏色就會被忽略。理論上,這種壓縮技術的壓縮比高達64:1。現在壹個64MB的文件只需要1MB?這真令人興奮。為了進壹步擴大壓縮效果,提高該技術的應用範圍,JPEG進行了靈活的調整。允許用戶設置處理單元的大小和忽略其他顏色的程度,這也是JPEG圖像具有“質量”屬性的原因。

JPEG提出的“有損壓縮”概念使得這種壓縮技術有壹定的局限性。比如JPEG不適合壓縮工程圖、醫學圖像等素材。但它的實用思想給了人們很大的啟發,RealPlayer率先沿著這條道路實現了在線視頻的實時播放。而VCD中被剝離了圖像的聲音也逐漸形成了流行的MP3音樂。(聲音壓縮的編碼方案太復雜,本文不討論。)

壓縮文件間隙

除了這些壓縮技術,DOS/Windows系統本身也給大家留下了壹個壓縮的故事。在DOS/Windows系統下,磁盤存儲空間被分割成小塊使用,而不是像UNIX或Novell那樣在系統的控制下將所有文件混合在壹起。這種開放磁盤文件格式雖然不安全(壹點都不安全),但是效率高,操作簡單。這可能也是DOS/Windows在家用和商用市場擊敗UNIX和Novell,但在服務器領域卻始終不如它們的重要原因。-因為每個分配塊只能被壹個文件使用,所以即使文件(或者文件的最後壹塊)只有壹個字節,也必須占用壹個分配塊。因為只剩下兩個字節來分配這個存儲塊(兩個字節是16位,這個分配機制叫做FAT16),所以無論分區有多大,最多只能分成2個16 = 65536分配塊。例如,2GB分區的分配塊大小為32KB;當分區超過2GB時,分配塊必須增長到64KB。妳想想,如果壹個字節文件也占了妳64KB,妳能不煩嗎?因此,從Windows 95 OSR2版本開始,微軟推出了FAT32解決方案。但即便如此,“文件鴻溝”依然存在。

為了解決文件間隙,微軟在DOS 6.0時代推出了雙空間(DBLSPACE),後來又改成了DRVSPACE,在Windows 95/98/ME上依然存在。當時說是可以讓硬盤容量翻倍,讓大家興奮不已,但是試了壹下就大呼上當了。原來微軟只是抄襲了別人,用的是“虛擬卷”技術,最多能保存文件間隙,對於整盤只放壹個大文件的用戶來說沒用。

現在有壹種更好的壓縮文件間隙的方法,就是用WINZIP把不常用的文件打包成壹個包,尤其是大量的小文件和/或在FAT16的環境下,使用這種方法可以為妳節省大量的磁盤空間。但無論如何,“文件鴻溝”似乎永遠存在於Windows系統中。

壓力越大?

文件會越來越大嗎?答案是:可以。因為壓縮文件需要壹個文件頭(文件格式,字典等。)控制解壓,壓縮已經“不堪重負”的文件時,只會增加壹個文件頭,文件當然會越來越大。另外,雖然壓縮後的文件更節省空間,更安全(壓縮文件可以加密,普通文本文件不能),但是如果文件頭損壞,整個文件就無法解壓。所以壓縮文件頭是非常重要的。這與剛才提到的FAT格式和UNIX/Novell卷格式之間的差異形成了對比。不過如果大家的ZIP文件都損壞了,建議試試DOS版的ZIP解壓縮器PKUNZIP,說不定還能保存壹部分。

可執行文件的壓縮

不僅文檔文件和數據文件可以壓縮,可執行文件也可以壓縮。致力於壓縮技術的PKWARE Inc最初推出PKZIP軟件(約1990)時,主要有三個程序,分別是PKZIP(用於壓縮)、PKUNZIP.EXE(用於解壓縮)和PKLITE.EXE(用於壓縮可執行文件)。壓縮可執行文件的過程很神奇。文件名不會改變,但長度會減少。這樣的壓縮文件在執行時會在內存中釋放自己,然後在執行前會被重新定位和重新加載。因為電腦是瞬間完成的,我幾乎感覺不到文件被壓縮過。在軟盤普及的年代,這個工具非常有用。

現在Windows下的程序越來越大,所以很多程序員壓縮自己的主程序,也能起到反盜版的作用。著名的“紅色警報”采取了這種方法。隨著互聯網通訊軟件的發展,很多軟件被打包成可執行程序,點擊後可以自行擴展安裝。這些也是可執行文件壓縮的例子。

壓縮技術的辯證分析

從歷史的角度來看,壓縮技術註定要滅亡。我們現在來看10之前的DOS時代,當時為了存儲目的的壓縮工作現在已經淹沒在海量存儲設備的容量中。從理論上講,壓縮浪費了我們的時間和精力。如果有足夠的存儲空間,我們沒有理由壓縮。縱觀目前的壓縮目的,除了壹小部分為了方便檢索,大量壓縮是為了適應互聯網傳輸速度慢。那麽,當網速可以滿足我們隨時在網絡上拖動整個硬盤的內容時,我們還需要壓縮嗎?當光盤的容量足夠大的時候,我們會容忍JPEG技術為我們丟掉壹兩個色點嗎?

但是,哲學指導我們,事物總是在發展的,總是有其他的特征。當容量不再是壓縮的目的,傳輸就成了我們壓縮的另壹個目的。誰能預測壓縮的下壹個目的會不會發生,會是什麽?(全文結束)

  • 上一篇:湖北歷史名人
  • 下一篇:閩菜背後的飲食文化
  • copyright 2024歷史故事大全網