---
# System prepended metadata

title: Digitization
tags: ['Computer Science ']

---

# Digitization
###### tags: `Computer Science `
## 浮點數表示法
如果說電腦只能用0和1來表示的話，那麼小數又要怎麼表示呢? 這時候就需要參考 "IEEE754"，也就是"二進位浮點數算數標準"了， 正如其名這個標準是由"IEEE(Institute of Electrical and Electronics Engineers)"所制定的，提供了浮點數在電腦中的表示標準，好讓眾多的電腦公司可以有個共同的準則可以遵循，以便於電腦的製程。

https://78802328-a-62cb3a1a-s-sites.googlegroups.com/site/nutncsie10412/ge-ren-jian-jie/fu-dian-shu-biao-shi-fa/IEEE754.gif?attachauth=ANoY7cpzMZqYaV5ixmQPgsY8paG2gIFmmu_TJmw6dO1mvKkbSA3fi_6kXuX53NKQhYAAAx-8lnp3FgOvnf_OmIeyqqkMEaImXmBHoNgw_2ysWc93xZY-8Yy95IoWtHf_yhBBmsEMSlN1YUlX1LS8Aky1ZpWulwvMso3YSAsDs_HcxucJcobTZ9B0PMxCYMxMBrazHCWClYk6ZUUrxyYNp_4HdkK94exmOwd7vySYD3uCD7YVdqcw50YI7PTYWIITHFih29yx6xoRCflAn3hQl-_H_q7l5oDq7A%3D%3D&attredirects=0
IEEE754

  當中的S指的是"Significand"，也就是這個數字的正負號，1代表負數，0代表正數，而exponent則代表指數部分，也就是這個數的次方數，mantissa則代表尾數部分，也就是真正表示這個數字樣子的地方，相信只講了一堆名稱，大家應該還是不太懂到底該怎麼來使用這個IEEE754吧? 不要急，讓我們慢慢來，首先，大家應該知道"科學符號(Scientific notation)"吧? 不知道的話，請自行去查詢，這邊不負責這部分的講解，也就是說，要把一個二進位的浮點數用IEEE754的方式來表示的話，必須先把它轉換成科學符號才行，像這樣:

10.5 (D) = 2^3 + 2^1 + 2^-1 = 1010.1 (B) = 1.0101 * 2^3

  關於小數點後的二進位數字要怎麼轉換的問題，就只能靠同學們自己運算，比方說 0.75(D) = 0.5 + 0.25 = 2^-1 + 2^-2 = 0.11 (B) ， 轉換完之後，再將數字轉換成科學符號的格式，也就是指留最左邊的1在小數點前，再把剩下的數字通通一到小數點後面，這樣子前置準備就算做好了，再來就要開始進行IEEE754的轉換了，可以分成以下的步驟:

1. 若是正數，則 S = 0，若是負數，則 S = 1，以上面的例子來說，就是這樣: 1.0101 * 2^3 >0 ，所以 S = 0。

2. 將該數的次方數加上127並填數exponent中，以上面的例子來說，就是這樣: 1.0101 * 2^3 ，所以exponent = 3 + 127 = 130 = 10000010，注意exponent 這邊是用二進位來表示的喔。

3. 將小數點以下的部分填進 mantissa 裡，以上面的例子來說，就是這樣: 1.0101 * 2^3 ，所以 mantissa = 01010000000000000000000，注意填的時候要從左填到右，不夠的位數補0就可以了。

  經過以上的步驟，一個IEEE754的浮點數就大功告成了，以上面的例子來說，最後是長這樣:

1.0101 * 2^3 = 0 10000010 01010000000000000000000

  不過，當然不是這樣子就完全沒問題了了，相信大家應該會感到疑惑，為什麼 exponent 需要加上127呢? 其實是就是為了表示非常小的數字，舉例來說，如果我們想表示 1.0101 * 2^-100 呢? 這時候 exponent 就會變成 - 100 + 127 = 27 = 00011011，所以整個就是長這樣:

1.0101 * 2^-100 = 0 10000010 01010000000000000000000

  至於為什麼是加127的原因的話，那是因為加上 127 剛好能讓 exponent 的次方數落在以下的範圍內: -127 < exponent < +128 ，左右的範圍差不多，這樣子在使用上也比較方便，像這樣的數我們便稱之為 "指數偏移植(exponent bias)"，基本上可以用這條公式算得出來: 
 exponent bias = 2^(m-1) -1
  當中，m 為 exponent 的位元數，所以，以 IEEE double precision float point 的標準來說， exponent bias 就是 2^(11 - 1) - 1 = 1023。

  接下來，若是我們想表示負數的話該怎麼辦呢? 舉例來說: -17.75 = - (17.75) = - (10001.11) = - (1.000111 * 2^4)，讓我們套用上面的三個步驟:

1. 因為是負數，S = 1。
2. exponent = 127 + 4 = 131 = 10000011。
3. mantissa = 00011100000000000000000。

  所以 -17.75 = 1 10000011 00011100000000000000000。

另外以下還提供幾個數字轉換，希望還不熟的同學可以參考看看:

Ex1. 5.75 求 IEEE
  5.75 = 5 + 0.5 + 0.25 = 101.11  = 1.0111 * 2^2
  a. 5.75 > 0 ， S = 0 
  b. exponent = 2 + 127 = 129 = 10000001
  c. mantissa = 0111000000000000000000
  5.75 (D) = 0 10000001 0111000000000000000000 (IEEE)

Ex2. -161.875 求 IEEE
  -161.875 = -(161 + 0.5 + 0.25 + 0.125) = -(10100001.111) = -(1.0100001111 * 2^7)
  a. -161.875 < 0 ，S = 1
  b. exponent = 127 + 7 = 134 = 10000100
  c. mantissa = 01000011110000000000000
  -167.875 (D) = 1 10000100 01000011110000000000000

Ex3. -0.0234375 求 IEEE
  -0.0234375 = -(0.015625 + 0.0078125) = -(0.0000011) = -(1.1 * 2^-6)
  a. -0.0234375 < 0 ，S = 1
  b. exponent = 127 + (-6) = 121 = 01111001
  c. mantissa = 10000000000000000000000
  -0.0234375 (D) = 1 01111001 10000000000000000000000 (IEEE)

Ex4. 11001010000000000111000100001111 (IEEE) 求 Decimal
  = 1  10010100  00000000111000100001111
  設定答案 N =  A * 2^x
  a. S = 1 ，所以 N < 0
  b. 10010100 = 148 = 127 + x ，所以 x = 21
  c. A = 1 + mantissa = 1.00000000111000100001111
  N = - (1.00000000111000100001111 * 2^21) = - (1000000001110001000011.11) (B) = - (2104378.75) (D) = -2104378.75 (D)


# Representing Video

影像解碼器採用兩種壓縮方式：時間壓縮和空間壓縮。

## Temporal compression(時間壓縮)
一種基於連續幀之間差異的技術：如果兩幀中的大多數圖像都沒有改變，為什麼我們要浪費空間來存所有相似資料訊息？
選擇一個關鍵幀作為比較差異的基礎，並存儲其整個圖像。
對於連續圖像，僅存儲更改（稱為delta frames增量幀）。
時間壓縮在逐幀變化不大的影像（例如運動很少的場景）中非常有效。

## Spatial compression(空間壓縮)
一種基於刪除幀中冗餘資料訊息的技術：該問題與壓縮靜態圖像時面臨的問題基本相同。
空間影像壓縮通常將像素分組為具有相同顏色的區塊（rectangular areas矩形區域），例如晴朗的藍天的一部分。
不是存儲每個像素，而是存儲區域的顏色和坐標。



