--- tags: Fundamentals of Logic Design --- # Introduction Number Systems and Conversion ## Digital Systems and Switching Circuits ![](https://i.imgur.com/3wstNLN.png) 類比:任何時間都有值 數位:不是任何時間都有值 (精確度, 可靠度比較高) :memo: 為什麼數位系統比較精確度及可靠: 類比系統是追求不要有任何誤差,可是之後又一些變因可能會造成相當大的誤差。數位系統是一開始給你一個誤差(是可決定的誤差),之後就不會超過這個一開始的誤差 ![](https://i.imgur.com/bY2f0kt.png) 在數位系統中, bit 越多就越精確 ![](https://i.imgur.com/Xd4f0Z5.png) 類比 -> (類比轉數位)-> (DSP 數位訊號處理) -> (數位轉類比)-> 類比 ![](https://i.imgur.com/GMu728x.jpg) 這堂課主要著重在 logic level gates = 邏輯閘 ![](https://i.imgur.com/IlkoWNZ.png) 由高電位區分 0 跟 1。 如果 s 接回去 v0 就是 3V ON ![](https://i.imgur.com/demNe8I.jpg) combinational network 組合網路 sequential network 順序網絡 ## Conversion between Number Systems 10進位轉換至2進位 * 整數部分 ![](https://i.imgur.com/VUp79RP.jpg) * 小數點的部分 ![](https://i.imgur.com/L2Tpx31.png) ![](https://i.imgur.com/w1PvGpt.png) 像是0.7就無法使用二進制無誤差的表現出來,會無限Loop。這裡較表現出來計算機因為表示方式而產生誤差 * 來個練習吧 ![](https://i.imgur.com/JdWkVwG.png) 除法<-小數點->乘法 * 快速法 ![](https://i.imgur.com/KvYsalN.jpg) 8進制和2進制差3個位元,所以就是把三個當一個單位 110 -> $2^2 \times 1 + 2^1 \times 1 + 2^0 \times 0 = 6$。 2進制和16進制差4個位元 ## Binary Arithmetic ![](https://i.imgur.com/Gg3GTPC.png) ![](https://i.imgur.com/At7NvMt.jpg) ## Negative Numbers 以下介紹三種表示負數的方法 ![](https://i.imgur.com/T5iJHUZ.jpg) * sign and magnitude (sign bit) + (positive magnitude) Hard to implement in hardware * 1's complement ![](https://i.imgur.com/HoNiPBR.png) * 2's complement (大家比較常用的一個方法) 做完 1's complement 後,再加一 ![](https://i.imgur.com/plnSnPk.png) 2's complement 只有正零的原因,把超出四位元的數字捨棄掉,最後就等於正零的表示法 ## Addition in 2's complement **2's complement arithmetic 運算規則:Any carry from the sign position is ignored !!!** 請記住 ![](https://i.imgur.com/mdnV31C.png) 0101 -> n=4 bit (四個位元) 四個位元的顯示範圍 $+2^{n-1}-1 \sim -2^{n-1}$ ![](https://i.imgur.com/x2J28Rb.jpg) 所以加法如果超過這個範圍,需要特別處理。超過+7這個四位元的系統是無法表現的。如圖所示,+11變成 1011 是負數的表示法(2's complement arithmetic),兩個正數相加變負數是錯誤的。這個就是所謂的 ==overflow== 。 :memo: 一正一負相加絕對不會 overflow,以下圖片可以說明 ![](https://i.imgur.com/1YJgY28.png) ![](https://i.imgur.com/UmKPRe5.jpg) Any carry from the sign position is ignored 多出來的 1 可以直接拿掉 * Summary * (+) + (+) = (-) -> overflow * (-) + (-) = (+) -> overflow * (-) + (+) = (-) or (+) -> must be ok! * (+) + (-) = (-) or (+) -> must be ok! ## Addition in 1's complement 對 carry 的處理方式與 2's complement 不一樣,需要加回來 ![](https://i.imgur.com/saxFvhh.jpg) 第二題:overflow ![](https://i.imgur.com/QVYDReZ.jpg) 第四題:carry 需要加到最右邊的 bit。這種carry 稱為 end-around carry ## Binary Codes 為了 IO 方便使用者觀看,選擇浪費一點記憶體,四個位元為一組代表一個數字 ![](https://i.imgur.com/zTNuRwx.png) ![](https://i.imgur.com/ORDBZer.jpg) gray code 的特性:相鄰的數只能有一個位元不一樣。(之後會用到) Excess-3 code 的特性:8-4-2-1 全部都加3 **Summary** ![](https://i.imgur.com/uFRd16h.png)