2014年9月29日 星期一

數位系統導論 - Binary System

#1.數位是什麼?而為什麼要數位?

先回答第一個問題,資料可以用兩種方法來表示,即是類比與數位,兩者最大的區別在於數值連不連續,其中類比是連續的,而數位是離散的。用一條1~5的數線來看,類比資料可以是其中任何一個點,比如1.3、0.1884251,但是數位資料可能只代表了整數點1,2,3,4,5,而在1跟2、2與3、3與4、4與5之間不容許其他任何值存在,只能透夠近似的方式把3.23之類的居中值分配給最接近的點。

而為何要數位呢?正如先前的例子,我們可以發現類比資料是無窮無盡的,比如1與2之間切半得1/2,再切1/4,可以這樣無窮的切下去,但是我們的硬體則是有限的,所以必須把類比資料數位化,方便電腦進行處理。

而多數的數位系統會用兩個離散值來表示狀態,比如
  • 0 or 1
  • True or False
  • High or Low
  • On or Off

#2.進位制表示法

2-1

一個N進位的數字1234.5678而言,可以寫作(1234.5678)N
而他用十進位的值為:1*103+2*102+3*101+4*100+5*10-1+6*10-2+7*10-3+8*10-4

十進位轉R進制:
  • 整數部分:不斷除R,除完後取商繼續除,直到不能除為止,取餘數排列(除越多次者越高位)
  • 小數部分:不斷乘R,乘完後取積繼續乘,直到小數化為整數,(乘最多次為最小小數位數)
2-2
二進位轉八進位:由右往左數,三個(2的三次=8)為一組
e.g. : 10101011 -> 10101011 ->  253
 
二進位轉八進位:由右往左數,四個(2的三次=16)為一組
e.g. : 10101011 -> 10101011 ->  AB

#3.

Signed Magnitude representation

  • 第一位用來表示正負e.g. 000 = 0,101= -1
  • 容易在運算在溢位
1's Complement representation
  • 負數表示法:原值0與1互換
    • e.g. 1011000 0100111
  • 缺點是存在兩個0 (111與000)
  • 1補數的減法 
    • 所有的減法都透過與其補數相加達成
      • e.g. a - b = a+(-b)
    • 相加如果有在最高位元有進位,要將進位值補到最末位元
    • 反之,沒有進位則代表真正答案為負,要再取一次原結果的一補數
2's Complement representation
  • 表示法:取一補數再+1
    • e.g.1011000 取一補數 0100111之後加一得 0101000
  •  2補數的減法
    • 所有的減法都透過與其補數相加達成
      • e.g. a-b = a+(-b)
    • 相加如果有在最高位元有進位,直接捨棄進位得答案
    • 反之,沒有進位則代表真正答案為負,要再取一次原結果的二補數


1.Binary Code
  • 每個bit可代表兩個情形(0&1),則n bits代表了2^n種情形
    • e.g. 10進位的數字0~9要區別可以使用4個位元(16種) 
Binary Code 表示法
  • BCD 8421
  • 2421
  • Excess - 3 =BCD + 3
  • 84 -2 -1
  • 以上每個數字都代表著一個位元
  • 比如數字4
    • 8421 : 0100 = 8*0+4*1+2*0+1*0
    • 2421 : 0100 = 2*0+4*1+2*0+1*0
    • Excess -3 : 0111 : BCD+3 = 0100 + 3 = 0111
    • 84-2-1: 0100 = 8*0+4*1+2*0+1*0
2.BCD
  • 185 = (0001 1000 0101)BCD
  • (a3,a2,a1,a0)BCD = 8a3+4a2+2a1+1a0
  • BCD編碼並不是self-complementing code,這使得BCD雖然是最直覺的編碼方式,但在某些情形仍需要其他三種補足
  • Self Compleementing
3.Gray Code
  • 優勢:確保一次只有一個位元改變,使得充放電(可以想做0與1之間的轉換)較少也較省功耗
 設計數位系統必須考慮三樣要素:cost,speed,power,必須要在三者間求得平衡

4.ASCII Character Code

  • American Standard Code for Information Interchange
  • 運用7個組合表示128種字元
5.Unicode
  • 2bytes
6.Error Detection/Correction Code
  • 傳遞的過程可能發生Error
  • 除了要偵測錯誤,還要把錯誤更正回來
  • 使用方法 : Even parity 與 Odd parity
  • Even parity : 將原字元插入1,使其共有偶數個1
    • 比如說 : 000插入0 (變為000-0,末位為parity),以維持0個(偶數個)1,001則要插入1,來維持2個(偶數個)1
  • Odd parity :將原字元插入1,使其共有奇數個1
  • 透過此法,能夠得知位元上的錯誤,比如說在傳送中將001-1誤傳為011-1,在Even parity的保護下,我們知道總共只能有偶數個1,從而得知傳送發生錯誤
  • 但是,如果錯了很多個bits,parity bit就不太可行了



Binary Storage & Register
  • Binary Cell
    • 2 stable states,1-bit information(0 or1)
  •  Register 暫存器
    • 是一組binary cell
    • 暫存需要處理或output的資料
    • 暫存的資料可能有不同的編譯方式,例如01000001可能表示A or 65 or ......
    • 其實暫存器就是由一堆邏輯閘構成的電路
    • 暫存器是最快但容量最小的記憶體,位於最高的記憶體階層
    • 依據暫存器的大小,可將處理器分為32bits與64bits

沒有留言:

張貼留言