[計算機概論] 第三講、Data Storage (3)

reference

[計算機概論] 第三講、Data Storage (3)
臺大科學教育發展中心CASE

課後感想

終於知道為什麼電腦指定值為 0.1 時,實際上會是 0.000000000000000000555111151
因為電腦在算數學的時候都只是「大概」,太好笑ㄌ
雖然他計算速度很快,但是值只是大概XD
因為電腦記憶體不夠,以二進位表示法儲存 10 進位的數字時,只能找「最接近」的數字,而非「精確」的數字。有趣!
知道 overflow 是什麼,truncation error 是什麼~
接著是檔案傳輸。
電腦在傳輸檔案的時候,會需要壓縮,課程講了常用到的 rar, zip, mp3 等壓縮檔壓縮的方式。
壓縮後的傳輸,是怎麼 Encoding 的,把文字或音訊變成 01010 的信號。
其中有提到很多方法,不過我就是看看而已XD

簡記課程內容

Data Storage

延續上一講 Data Storage (2)

Normalized form

IEEE normalized

Double, Float

記憶數字的大小固定,以 python 來說
float: 4 bytes
如果 a = 0.1
當你強破電腦印出小數以下 50 位時,他會顯示
format(0.1, ".50f")
'0.10000000000000000555111512312578270211815834045410'
簡單來說就是記憶體位置不夠
當用 4 bytes 存取數字時 = 8 * 4 = 32 bits
那麼最多能存取的位數就是 32 個 bits,所以在存的時候,對電腦來說,0.1 是個大概。
用 2 進位表示法,電腦沒辦法精準給到 0.1,所以會有後面的數字。
因為 1/10 在 2 進位,怎麼換都換不完
除非你叫他記 1/2 那他會很開心 :))

資料傳輸

資料量很大,如何有效率?資料壓縮
傳輸過程有錯,怎麼辦?

Data compression

.zip, .rar, .mp3, ,mpg

Lossy

  • Relative/difference
    • 影像,連續圖片,但一直紀錄圖片很浪費,因此只紀錄有變化的東西,像是上課教室的黑板是固定的,兩張圖之間就不用一直記黑板

Lossless 非失真

  • Run-length encoding
    • 用「10個1」取代 1111111111; 10 個 0」取代 0000000000; 「10 個 01 」取代 01010101010101010101

  • Frequency-dependent encoding
    • Huffman: 某東西很常出現的,可以把編碼少一點,少出現的再多一點
      AAABBBAABCAAAABD 16個 characters 要怎麼傳輸
      • 編碼:
        A: 00, B:01, C:10, D:11
      • 算 Frequency:
        A 出現 9 次 B 出現 5 次 C 出現 1 次 D 出現 1 次
      • 出現最少次的黏在一起
        C:1 D:1 => 1 + 1 = 2
      • 現在剩三個點 9, 5, 2 再黏在一起 5 + 2 = 7
      • 9 + 7 = 16
      • 出現越多次的,越晚連到根,出現越少次的,越複雜

      • 編成這樣

      • 9 * 1 + 5 * 2 + 1 * 3 + 1 * 3 = 25 bits
      • 比原本 32 bits 少
      • 當收到 0001010100001110000001111 從最左邊開始解碼
      • 看到 0 -> A, 0->A, 0->A, 1 -> 不知道(B, C, D 都有可能), 0 -> 因為 10 所以是 B, 又遇到 1 不知道(B, C, D 都有可能), 0 -> 因為 10 所以是 B... 依此類推
      • 記得傳輸資料時,Tree(字典)也要傳
  • Dictionary encoding
    • 常見的字給他一個代碼,the 就不用 8 bits +  8 bits +  8 bits 的記,給他一個 9 bits 的編碼
    • LZW: LZMA
      • 一開始有 code book(ASCII),但最後字典不用傳給別人!
      • xyx空白xyx空白xyx空白xyx空白xyx空白
      • 遇到空白就自己長字典:xyx 編成 4


      • 傳的時候傳 121343434,xyx 4 是不用傳的
      • 收也是 121343434
      • 解碼:1-> x, 2 -> y, 1-> x, 3-> 空白, 建立字典 xyx: 4, 4 -> xyx
      • 在一編解壓縮一邊建立字典
其他像聲音 mp3 就可以先把低於 20 hz 高於 2w hz 的聲音先去掉,因為人根本聽不到

Communication Error

  • Compression
    • remove redundancy 資料裡面必須有 redundancy 才能壓縮
  • Error detection & correction
    • Add redundancy to prevent errors
  • Error detection: Check
    • 知道有錯,但不知道錯在哪裡:可以請對方重發一次,無法更正錯誤
    • ID numbers 身分證字號
    • ISBN 書碼
    • parity code
  • Error correcting
    • Can correct errors(to some degrss)
  • Hamming Code

Comments

Popular posts from this blog

《 Imgproxy 使用分析一:圖片下載速度優化分析:Akamai CDN vs Imgproxy 效能比較》

《 Akamai + S3 與 CloudFront + Imgproxy + S3 使用分析二:壓縮圖片設計流程:檔案大小 vs 載入時間的權衡》

程式語言初學者 Docker 入門第二章 —— 安裝與驗證 (Mac)