[計算機概論] 第三講、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
Post a Comment