170 likes | 492 Views
第六章 算術電路. 二進位加減法. 二進位加法 (binary addition) 0+0=0 0+1=1 1+0=1 1+1=10 註標 (subscript) 1 2 +1 2 =10 2 7 8 +1 8 =10 8 9 10 +1 10 =10 10 F 16+ 1 16= 10 16 更大二進位數加法 11100 2 +11010 2 =110110 2 8 位元運算 Ex. 6-1 pp. 310 Ex. 6-2 pp. 311 Ex. 6-3 pp. 312
E N D
二進位加減法 • 二進位加法(binary addition) 0+0=0 0+1=1 1+0=1 1+1=10 • 註標(subscript) 12+12=102 78+18=108 910+110=1010 F16+116=1016 • 更大二進位數加法111002+110102=1101102 • 8位元運算Ex. 6-1 pp. 310 Ex. 6-2 pp. 311 Ex. 6-3 pp. 312 • 二進位減法(binary subtraction) 0-0=0 1-0=1 1-1=0 10-1=1Ex. 1101-1010=11Ex. 6-4 pp. 315
無符號二進位數字 • 無符號二進位數字(unsigned binary numbers)8位元 0000 0000 (00H) ~ 1111 1111 (FFH) 010 ~ 2551016位元 0000 0000 0000 0000 (0000H)~1111 1111 1111 1111 (FFFFH) 010 ~ 6553510
溢位 • 8位元無符號進行二進位加法運算,若結果大於255則會造成溢位(overflow),即有進位到第9行。大多數微處理機均有一邏輯電路稱為進位旗標(carry flag),偵測是否有溢位,以指示此8位元結果是錯誤的。 • Ex. 6-5 pp.316 • Ex. 6-6 pp.317 • Ex. 6-7 pp.318 • 8位元運算電路只可處理0~255間之數。若計算中有溢位時,程式師需以程式察看進位旗標後處理。
帶符號數字 • 帶符號數字(sign-magnitude numbers)以MSB表示符號,其餘位元表示大小。+7 0000 0111-16 1001 0000 • 帶符號數字範圍8位元 0000 0001 (+1) 1000 0001 (-1) 0111 1111 (+127) 1111 1111 (-127)16位元 0000 0000 0000 0001 (+1) 0111 1111 1111 1111 (+32767) 1000 0000 0000 0001 (-1) 1111 1111 1111 1111 (-32767) • 待符號數字最大優點是簡單,但所需處理電路較複雜。
2的補數表示法 • 2的補數表示法(2’s complement representation),可簡化執行運算所需邏輯電路。 • 1的補數(1’s complement)將二進位數字每一位元取補數。例: 1010 0101 1110 1100 0001 0011
2的補數表示法 • 2的補數 = 1的補數+1例: 1011 0101 1110 1100 0001 0100 • 正數與負數MSB=0 正數 MSB=1 負數若一數取2的補數即等於改變數字符號。Ex. 3 0011 -3 1101
2’s 與十進位數之轉換 • Ex. +23 0001 0111 -48 1101 0000 0111 0111 +119 1110 1000 -24 • 2的補數表示法,最大負數之大小比最大正數之大小還大1。Ex. 8位元表示法 +127 ~ -128 • Ex. 6-8 pp.326 • Ex. 6-9 pp.326
2的補數之算術運算 • 2的補數是處理正數及負數最常用之碼。 • 加法 • 兩數均為正: 83+16=99 0101 0011+0001 0000 = 0110 0011 • 正數與較它小的負數:125+(-68)=57 0111 1101+1011 1100= 1 0011 1001 • 正數與較它大之負數:37+(-115)=-78 0010 0101+1000 1101=1011 0010 • 兩數均為負數:(-43)+(-78)=-121 1101 0101+1011 0010=1 1000 0111 • 任何正數及負數使用2的補數法輸入到加法電路,均可產生正確結果。(但其結果需在-128~127內否則會溢位)
2的補數之算術運算 • 減法加上一個負數相當於減掉一個正數。所以進行減法時,可將減數取2的補數後加上被減數。 • 二數均為正數83-16=67 0101 0011+1111 0000= 1 0100 0011 • 正數及較它小的負數68-(-27)=95 0100 0100+0001 1011= 0101 1111 • 正數及較它大之負數14-(-108)=122 0000 1110+0110 1100= 0111 1010 • 兩數均為負數(-43)-(-78)=35 1101 0101+0100 1110=1 0010 0011
2的補數之算術運算 • 溢位(overflow)8位元算術運算,可能發生錯誤之處即是其和已超過-128~127的範圍。當這種情況發生時,則會發生溢位到符號位元,造成符號變化。 • 加法運算時,當兩數同符號才可能產生溢位。Ex. 100+50=150 0110 0100+0011 0010=1001 0110Ex. (-85)+(-97)=-182 1010 1011+1001 1111=1 0100 1010
溢位之處理 • 溢位是軟體問題而非硬體問題,程式師必須於程式設計中考慮。 • 程式需先進行符號檢查,若兩符號相同,則其相加結果應和此二進位數之符號相同。若符號不同時,則指令應指示電腦使用16位元算術運算。 • Ex. 6-10 pp.335
半加器 • 算術電路基本電路方塊:半加器、全加器、控制反向器。 • 半加器(half adder)單一位元相加
全加器 CARRY OUT CARRY IN • 全加器(full-adder)對於更多位元的相加,需採用全加器,方能進行3個位元相加。第三位元來自前一行的進位。
控制反向器 • 控制反向器(controlled inverter)當INVERT為低準位時,可將8位元輸入傳至輸出。當INVERT為高準位時,可將8位元輸入反向後傳至輸出。 • 經由控制反向器,可取得1’s的補數。
加法-減法器 • 加法-減法器(the adder-subtracter)可用來處理二進位的加減法。所有全加器的進位輸出乃是較其高1位元全加器之進位輸入。 • SUB=L 加法運算SUB=H 減法運算
加法-減法器 • 加法 SUB=0 Ex. 0111 1101+1011 1101=1 0011 1010 125+(-67)=58 • 減法 SUB=1Ex. 0101 0010-0001 0001=1 0100 0001 85-17=65