數據或文件壓縮在計算機機器層面是怎樣實現的?

我們通常在電腦中把一個大文件用壓縮軟體給壓成一個相對較小的文件,在內存中或者計算機層面是怎樣操作實現的?求原理,謝謝各位大神前來不吝賜教!


《Data Compression: The Complete Reference》,看完就懂了


題主,你需要的是這本書《數據壓縮導論》(各大網路商城都有賣)

這本書是數據壓縮入門經典,看完前半部分自己寫一個對性能要求不高的無損壓縮軟體不是任何問題,也自然能解決你心中的疑問。

部分目錄:

以下是無損壓縮,常用於文本,消息等需要精準還原的信息。

第3章 霍夫曼編碼

第4章 算術編碼

第5章 詞典方法

第6章 基於上下文的壓縮

第7章 無損圖像壓縮

以下是有損壓縮演算法,常用於音視頻,圖像等領域

第9章 標量量化

第10章 矢量量化

第11章 差分編碼

第13章 變換編碼

第14章 子帶編碼

第16章 基於小波的圖像壓縮

第17章 音頻編碼

第18章 分析/合成與合成分析方案

第19章 視頻壓縮


機器層面沒有任何實現。基本上除了少數CPU或者GPU有特殊處理,可以加快壓縮解壓縮。其他基本沒什麼特別的實現。具體可以參考jpg的壓縮和解壓縮。據說部分硬體支持jpg的硬體壓縮解壓。

壓縮的基本原理就是去掉數據冗餘

打個比方 我這段回答中 壓縮 這個詞語高頻率出現 這就可以只保存一個編號 然後用佔位符代替之類的 utf-8一個中文是 3個位元組吧 兩個中文是6個位元組

壓縮的時候

idx

0x00=壓縮

然後 在數據部分就可以用 0x00 這一個位元組表示壓縮 這個詞語的6個位元組 解壓的時候掃描一遍替換回去就行了 當然。。。。可能往往需要兩個位元組來佔位


壓縮前

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

壓縮後

120個0, 120個1


推薦閱讀:

在一個成果互評系統里,小團體有什麼不留痕迹、又能分辨彼此作品的策略?
橋牌叫牌體系是如何設計的?
如果有個飛船,在某處畫個點,就能解碼出一套百科全書,真的可能么?
既然電磁波能容納的信息量是由頻率決定了的,那麼為什麼下載速度和wifi信號強度有關係?

TAG:數據 | 資訊理論 | 數據壓縮 |