<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

內存和磁盤的關系&數據壓縮(下)

jf_78858299 ? 來源:前端柒八九 ? 作者:前端柒八九 ? 2023-03-31 16:21 ? 次閱讀

文件以字節位單位保存

文件是將數據存儲在磁盤等存儲媒介中的一種形式。程序文件中存儲數據的單位是 「字節」 。文件的大小之所以用xxKB、xxMB等來表示,就是因為文件是以字節(B = Byte)為單位來存儲的。

?文件就是**「字節數據的集合」**

?

用1字節(=8位)表示的字節數據有256種,用二進制數來表示的話,其范圍就是00000000~11111111。

  • 如果文件中存儲的數據是文字,那么該文件就是**「文本文件」**
  • 如果是圖形,那么該文件就是 「圖像文件」 。

?在任何情況下,文件中的字節數據都是 「連續存儲」 的。

?

圖片


RLE算法

我們來嘗試對存儲著AAAAAABBCDDEEEEEF這17個 「半角字符」 的文本文件進行壓縮。

由于半角字母中, 「1個字符是作為1個字節」 的數據被保存在文件中的。因此,上述文件的大小就是17個字節。

我們可以采用將文件的內容用 「字符 × 重復次數」 這樣的表現方式來壓縮。所以,AAAAAABBCDDEEEEEF就可以用A6B2C1D2E5F1來表示。而A6B2C1D2E5F1是12個字符,那么對應的文本文件就變成了12字節。

12字節÷17字節 ≈70%。也就是采用上述的方式,使得文件壓縮到原來大小的70%。

圖片

把文件內容用 「數據 × 重復次數」 的形式來表示的壓縮方法稱為RLE(Run Length Encoding,行程長度編碼)算法

RLE算法的缺點

然而在實際的文本文件中,同樣字符多次重復出現的情況并不多見。雖然針對 「相同數據經常連續出現」 的圖像、文件等,RLE算法可以發揮不錯,但是它并不適合文本文件的壓縮。


哈夫曼算法

「哈夫曼算法」 是哈夫曼與1952年提出來的壓縮算法。

針對,哈夫曼算法,首先要拋棄 「半角英文數字的1個字符是1個字節(8位)的數據」 這一概念。

文本文件是由不同類型的字符組合而成的,而且不同的字符出現的次數也是不同的。例如,在某一個文本文件中,A出現了100次,Q出現了3次。

? 「哈夫曼算法」 的關鍵就在于 「多次出現的數據用小于8位的字節數來表示,不常用的數據則用超過8位的字節數來表示」 。

?

AQ都用8位來表示時,原文件的大小就是100次 × 8位 + 3次 × 8位 = 824位,而假設A用2位,Q用10位表示,壓縮后的大小就是100次 × 2位 + 3次 × 10位 = 230位。

不過,有一點需要注意,

?不管是不滿8位的數據,還是超過8位的數據,最終都要 「以8位為單位保存到文件中」 。

?

這是因為磁盤是以字節(8位)為單位來保存數據的。

圖片

用二叉樹實現哈夫曼編碼

哈夫曼算法是指,為 「各壓縮對象文件」 分別構造最佳的編碼體系,并以該編碼體系為基礎來進行壓縮。因此,用什么樣的編碼(哈夫曼編碼)對數據進行分割,就要由各個文件而定。

用哈夫曼算法壓縮過的文件中,存儲著哈夫曼編碼信息和壓縮過的數據。

圖片

在哈夫曼算法中,通過借助 「哈夫曼樹」 構造編碼體系,即使在不使用字符區分符號的情況下,也可以構建能夠明確進行區分的編碼體系。也就是說,利用哈夫曼樹后,就算表示各字符的數據 「位數」 不同,也能夠做成明確區分的編碼。

制作哈夫曼樹

自然界的樹是從根開始生枝長葉,而哈夫曼樹是 「從葉生枝,然后再生根」 。

圖片

哈夫曼算法能夠大幅度提升壓縮比率

使用哈夫曼樹后,出現 「頻率越高的數據所占用的數據位數就越少」 ,而且數據的區分也可以很清晰的實現。


可逆壓縮和非可逆壓縮

  • 「可逆壓縮」 :能還原到壓縮前狀態的壓縮
  • 「非可逆壓縮」 :無法還原到壓縮前狀態的壓縮

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10512

    瀏覽量

    207264
  • 計算機
    +關注

    關注

    19

    文章

    6757

    瀏覽量

    85298
  • 計數器
    +關注

    關注

    32

    文章

    2209

    瀏覽量

    93367
收藏 人收藏

    評論

    相關推薦

    【TL6748 DSP申請】井下數據壓縮技術

    申請理由:我是中石油渤海鉆探工程公司定向井分公司的儀器工程師,目前我在研發一項科研項目,主要是關于數據壓縮算法以及數據編解碼方面技術研究。需要利用數據處理芯片來實現井下數據壓縮及編解碼
    發表于 09-10 11:09

    請問有沒有32可用的數據壓縮算法?

    了40M大小,手賤用rar壓縮了一,3.2M?。?!,為了傳輸這40M的數據更改了工具的波特率和buffer,這樣就和公司老產品不兼容了,如果STM32上能實現類似rar的數據壓縮算法
    發表于 12-19 08:57

    MapReduce數據壓縮的基本原則

    黑猴子的家:MapReduce數據壓縮
    發表于 05-24 12:45

    LZO Data Compression Core/無損數據壓縮IP Core

    基于LZO的高性能無損數據壓縮IP
    發表于 12-21 07:14

    【ELT.ZIP】OpenHarmony啃論文俱樂部——多層存儲分級數據壓縮

    層次速度更快,但容量更?。?;減少數據量最常用的是數據壓縮,在合適的場景和環境匹配對應的壓縮技術是尤其需要關注的。自然而然地,我們就會聯想到:如果二者同時進行,不就可以相互受益了嗎?
    發表于 07-23 13:20

    【學習打卡】【ELT.ZIP】OpenHarmony啃論文俱樂部——多層存儲分級數據壓縮

    層次速度更快,但容量更?。?;減少數據量最常用的是數據壓縮,在合適的場景和環境匹配對應的壓縮技術是尤其需要關注的。自然而然地,我們就會聯想到:如果二者同時進行,不就可以相互受益了嗎?
    發表于 07-23 13:26

    數據壓縮技術

    一、數據壓縮的必要性二、多媒體數據壓縮的可能性三、壓縮方案應滿足的要求四、編碼方案分類五、數據壓縮(編碼)的主要步驟六、一些基本的壓縮技術七
    發表于 03-25 13:19 ?35次下載

    傳真機的數據壓縮系統

    傳真機的數據壓縮系統         
    發表于 12-29 16:51 ?598次閱讀

    JPEG2000數據壓縮的FPGA實現

    高性能的數據壓縮可以有效的減少數據對存儲空間和通信帶寬的要求,降低通信成本。為解決圖像數據的高壓縮性能問題,本文提出了基于JPEG2000標準的數據
    發表于 04-16 10:39 ?47次下載
    JPEG2000<b class='flag-5'>數據壓縮</b>的FPGA實現

    JAVA教程之數據壓縮與傳輸

    JAVA教程之數據壓縮與傳輸,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:28 ?10次下載

    小波算法在監測數據壓縮中的應用

    小波算法在監測數據壓縮中的應用
    發表于 02-07 18:22 ?16次下載

    數據壓縮的重要性

    數據壓縮是指在不丟失有用信息的前提下,縮減數據量以減少存儲空間,提高其傳輸、存儲和處理效率,或按照一定的算法對數據進行重新組織,減少數據的冗余和存儲的空間的一種技術方法。
    的頭像 發表于 02-28 10:45 ?1.4w次閱讀

    數據壓縮算法計算步驟及過程

    一種非常簡單的壓縮方法是行程長度編碼,這種方法使用數據數據長度這樣簡單的編碼代替同樣的連續數據,這是無損數據壓縮的一個實例。這種方法經常用
    的頭像 發表于 02-28 10:51 ?1.2w次閱讀
    <b class='flag-5'>數據壓縮</b>算法計算步驟及過程

    有趣!史記:數據壓縮算法列傳

    簡單地說,如果沒有數據壓縮技術,我們就沒法用 WinRAR 為 Email 中的附件瘦身;如果沒有數據壓縮技術,市場上的數碼錄音筆就只能記錄不到20 分鐘的語音;如果沒有數據壓縮技術
    的頭像 發表于 11-11 15:21 ?576次閱讀

    內存磁盤關系&amp;amp;數據壓縮(上)

    計算機中主要的存儲部分是 「內存」 和 「磁盤」 。 「磁盤中存儲的程序,必須要加載到內存后才能運行。在磁盤中保存的原始程序是無法直接運行的
    的頭像 發表于 03-31 16:21 ?1028次閱讀
    <b class='flag-5'>內存</b>和<b class='flag-5'>磁盤</b>的<b class='flag-5'>關系</b>&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>數據壓縮</b>(上)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>