BCC

24
聯聯聯聯聯聯聯 聯聯聯 [email protected]. tw 1 BCC 聯聯聯聯

description

BCC. 數字系統. r 進位:轉成 10 進位. r 代表「基底」 10 進位: r = 10 2 進位: r = 2 D r : 表示某個 r 進位的數 (r 不寫,表 r=10) D r ≡ (d n-1 d n-2 …d 0 ‧d -1 d -2 …d -q ) r 135.246 10 = (1*10 2 +3*10 1 +5*10 0 +2*10 -1 +4*10 -2 +6*10 -3 ) 10 147.256 8 = (1*8 2 +4*8 1 +7*8 0 +2*8 -1 +5*8 -2 +6*8 -3 ) 10 - PowerPoint PPT Presentation

Transcript of BCC

Page 1: BCC

nschou@nuu聯合大學資工系 周念湘.edu.tw

1

BCC

數字系統

Page 2: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 2

r 進位:轉成 10 進位 r 代表「基底」

10 進位: r = 10 2 進位: r = 2

Dr: 表示某個 r 進位的數 (r 不寫,表 r=10) Dr ≡ (dn-1dn-2…d0‧d-1d-2…d-q)r 135.24610= (1*102+3*101+5*100+2*10-1+4*10-2+6*10-3)10 147.2568= (1*82+4*81+7*80+2*8-1+5*8-2+6*8-3)10

就某一個「數量」而言,不同進位,只是表示法不同,他們都是表示「同一個數量」,理論上必須相同。 整數:各進位間,有「 1 對 1 」對應 實數: 10 進位轉成 2 進位時,可能無法用有限的位數表示!

在電腦的世界中 , 整數、實數以不同方式存放

10

ni

r ii q

D d r

Page 3: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 3

10 進位:轉成 r 進位 「整數、小數」分開算

整數:連除 r ,取餘數 小數:連乘 r ,取整數

【範例】 766.2812510=( ? )8 766.2812510=(1376.22)8

Page 4: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 4

整數: n 位數 , r 補數 r 代表「基底」

10 進位: r = 10 2 進位: r = 2

Dr: 表示某個 r 進位的整數 我們必須明訂這個整數是幾位數 ( 令為 n), 位數不夠需補 0 Dr ≡ (dn-1dn-2…d0)r

r 補數,代表 r 進位系統中的「負數」 有了 r 補數,我們就可用加法來做減法,簡化硬體線路

∵A-B = A+(-B) = A+(B 的 r 補數 ) ∴-B= B 的 r 補數

0 10

ni

r ii

D d r

Page 5: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 5

整數: n 位數 , r 補數 既然,「 r 補數」代表 r 進位系統中的「負數」

『 Dr ≡ (dn-1dn-2…d0)r>0 』 的 r 補數= -Dr = rn -Dr ∵ Dr + -Dr =0 而 Dr +(rn -Dr ) = rn = (1n0n-10n-2…00)r ∵我們只計 n 位數 ∴將 1n丟掉 ( 忽略 ) 即得到正確的答案 0 例子:求 (1234)10的 10 補數: 求 (1011)2的 2 補數: 10000 10000 1234 (- 1011 (- ----------- ------------- 8766 = (104-123410) 0101 = (24-10112) 1234 (+ 1011 (+ ----------- ------------- 10000 = (10410) 10000 = (24)

Page 6: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 6

整數: n 位數 , r 補數 「 r 補數」比較不好算 「 r-1 補數」 +1, 令 r’=r-1

『 Dr ≡ (dn-1dn-2…d0)r 』 的 r-1 補數= -Dr -1 = rn -1-Dr = (r’n-1r’n-2…r’0)r- (dn-1dn-2…d0)r

例子:求 (1234)10的 9 補數: 求 (1011)2的 1 補數: 9999 1111 1234 (- 1011 (- ----------- ------------- 8765 = (104-1-123410) 0100 = (24-1-10112) 「 r 補數」 = 「 r-1 補數」 +1 例子:求 (1234)10的 10 補數: 求 (1011)2的 2 補數: 8765 = (104-1-123410) 0100 = (24-1-10112) 1 (+ 1 (+ ------------- ------------- 8766 = (104-123410) 0101 = (24-10112)

剛好: 10, 01

Page 7: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 7

二進位 電腦為何使用「二進位」?

因為電腦的「元件」都是「雙態 (2 種狀態 ) 」元件 二極體: P 極、 N 極 磁蕊 :南極、北極 電壓 :高電壓、低電壓

這些「雙態」元件的狀態都可利用「電」改變之 其中一種狀態稱之為「 0 」,另一種狀態稱之為「 1 」 若該元件可持續維持在某一狀態,直至我們改變它為止,則我們稱之為「記憶體元件」

1 個這樣的記憶體元件,我們稱其為「一個 bit 」

Page 8: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 8

二進位 為何「元件」在任一時間點,只能存 1 或 0 ?

i.e. 為何不能同時存 1 和 0 ? 以「磁蕊」為例說明之:

假設南極為 0 ,北極為 1 同一個磁蕊同一時間只能有一種極性 , 因此 , 只能有一種狀態 , 要麼是 0, 要麼是 1

因此 , 當有人說「把 0 存入某記憶體 ( 元件 )中」 :意指「將該記憶體 ( 元件 ) 的狀態改為 0 」

Page 9: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 9

bit | nibble | Byte 任何資料在電腦中,必是以「 0101… 」的形式存入,該形式稱之為「 bit pattern 」 吾人以「 β2」表示之。 10 進位無號整數 (α10) 轉成 2 進位 (β2) 寫成「 α10= β2 」 1bit 只能表示 2 種狀態

當我們需要多種狀態時,就需要多個 bit 組合起來,看成一組。 nibble: 4 bits 看成一組 有 24= 16 種狀態 (bit pattern) Byte : 8 bits 看成一組 有 28= 256 種狀態 (bit pattern)

4bit :雖然有 16 種狀態 (bit pattern) , 但是,任一時間點,只能「存」其中一種狀態 (bit pattern)

Bit pattern 16 無號整數0000 0 00001 1 10010 2 20011 3 30100 4 40101 5 50110 6 60111 7 71000 8 81001 9 91010 A 101011 B 111100 C 121101 D 131110 E 141111 F 15

Page 10: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 10

有號整數存入電腦的方式: n-bits 2 補數 (2’s complement) :儲存負整數

1 補數 (1’s complement) :為了方便計算 2 補數 Excess 2n-1:儲存實數的指數

Page 11: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 11

1’s complement : 1 補數 (1’s complement): n-bits

D10 β2 = α10 formula:

D10 ≧0 D10=B2≡β2 D10< 0 (1) -D10 =P2≧0 (2) β2 ≡ 「 P2的 1 補數」 =~P2

=(2n-1)10-P2 =(2n-1)10+D10 = α10

~P2 ≡{P2各 bit : 01, 10} 兩種 0 :+ 0, -0

以4-bits 為例: 0000, 1111

有號整數

1 補數

Page 12: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 12

2’s complement : 2 補數 (1’s complement)+1

D10 β2 = α10 formula:

D10≧0D10=B2=β2 MSB=0 D10 < 0 //D10=-410(1) -D10 = P2 //P2=410=01002(2) β2 = P2的 2 補數 (11002)=~P2+1

=(2n-1)10-P2+1 =(2n)10+D10 = α10 MSB=1

X-Y=X+(-Y) -Y=Y 的 2 補數

2 補數

12

Page 13: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 13

2’s complement : 2 補數 D10< 0 「令 S’2 =D’10 」

D10 β2≡(1S’)2=α10=2n+D10 =2n-1+ S’2=2n-1+D’10 D10 = 2n-1+ D’10 -2n = D’10 -2n-1 舉例:

D10=-6 10102=1010=23+0102 S’2 =0102=210=D’10 D10=-6=210-23=D’10-23=D’10-24-1

89

101112131415

89

101112131415

Page 14: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 14

(A+B)2 : illegal : cn⊕cn-1=1 C=cncn-1cn-2cn-3…c0A= an-1an-2an-3…a0B= bn-1bn-2bn-3…b0 -2n-1≦ A+B=Z < 2n-1 (cn=0)⊕(cn-1=1)=1 overflow

cn=0, cn-1=1 an-1=bn-1=0 C=01cn-2cn-3…c0A= 0an-2an-3…a0 >0B= 0bn-2bn-3…b0 >0 (+-------------------------------Z= 1zn-2zn-3…z0 <0 ( 正+正變負 ) cn-1=1 A+B≧2n-1 →← overflow 8

9101112131415

89

101112131415

Page 15: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 15

(A+B)2 : illegal : cn⊕cn-1=1 C=cncn-1cn-2cn-3…c0A= an-1an-2an-3…a0B= bn-1bn-2bn-3…b0 -2n-1≦ A+B=Z < 2n-1 (cn=1)⊕(cn-1=0)=1 underflow

cn=1, cn-1=0 an-1=bn-1=1 (A,B<0) C=10cn-2cn-3…c0A= 1an-2an-3…a0 <0 令 A=1A’ B= 1bn-2bn-3…b0 <0 (+ 令 B=1B’ -------------------------------Z= 0zn-2zn-3…z0 ≧0 ( 負+負變正 ) cn-1=0 0≦A’+B’<2n-1 (Z>0)A+B=(A’- 2n-1)+(B’- 2n-1) =A’+B’- 2n <2n-1-2n

<-2n-1 →← underflow 89

101112131415

89

101112131415

Page 16: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 16

(A+B)2 : legal : cn⊕cn-1=0 C=cncn-1cn-2cn-3…c0A= an-1an-2an-3…a0B= bn-1bn-2bn-3…b0 -2n-1≦ A+B < 2n-1 cn⊕cn-1=0

cn=1, cn-1=1 drop cn 試證明 A * B<0 則 A + B>0

cn=0, cn-1=0 do nothing 試證明 A * B<0 則 A + B<0

A+B<0 (MSB=1) 轉成 10 進位時,結果需再取 2 補數,前面加上負號。 8

9101112131415

89

101112131415

Page 17: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 17

(A*B)2 :「 left shift 」「+」

Page 18: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 18

(A/B)2 : 「 left shift 」「 - 」 110011002/1012R1 = 110011002 -(101)2*25 Q1=1*25 = 1011002R2 = 1011002 -(101)2*23 Q2=1*23

= 1002 Ans: Q=Q1+Q2=1000002+10002=1010002 =4010 R=R2 = 1002 = 410 驗證: (11001100)2 /1012=20410/510=40 餘 4 減法會用「加 2 補數」做

Page 19: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 19

Excess 2n-1 表示法 excess-8 (23)

D10β2 = α10 = (D+2n-1) 10 D10=6β2 =11102 = 1410

=(6+8)10 D10≧0β2 是 2n-1 -D10的 2 補數 D10< 0β2 是 2n-1+D10的 2 進位 β2 = α10 α10 - 2n-1

β2 = α10 α10 if α10 <2n-1 α10 - 2n otherwise

76543210

2’s complement

Excess-8

15141312111098

Page 20: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 20

實數 (Floating Point) 儲存方式 以 8bits 舉例說明:

Page 21: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 21

IEEE 754 : 1. single precision31 0

30 Biased Exponent 23 excess-bias

22 significand 0Mantissa

31 Sign

Exponent Biased exp Mantissa Value-126 to 127 1 to 254 any +/- real

128 255 (111111112) 0 (+/- ) ∞128 255 (111111112) ≠0 NaN-127 0 (000000002) ≠0 underflow

+127

value=(-1)S* (1+M) * 2(BE-Bias) (Bias=127)

Page 22: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 22

IEEE 754 : 1. single precision31 0

30 Biased Exponent 23 excess-127

22 significand 0Mantissa

31 Sign

value=(-1)S* (1+M) * 2(BE-Bias) (Bias=127) -3.1415 = (-1)1* (11.00100100001…)= (-1)1* (1.100100100001…) * 21

= (-1)1* (1.100100100001…) * 2(128-127)

10000000

Page 23: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 23

IEEE 754 : 2. double precision

Exponent Biased exp Mantissa Value-1022 to 1023 1 to 2046 any +/- real

1024 2047 (11…112) 0 (+/- ) ∞1024 2047 (11…112) ≠0 NaN-1023 0 (00…002) ≠0 underflow

+1023

value=(-1)S* (1+M) * 2(BE-Bias) (Bias=1023)

64 0

62 Biased Exponent 52 excess-1023

51 significand 0Mantissa

63 Sign

Page 24: BCC

數字系統 聯合大學資工系 周念湘 [email protected] 24

IEEE 754 : 2. double precision64 0

62 Biased Exponent 52 excess-1023

51 significand 0Mantissa

63 Sign

value=(-1)S* (1+M) * 2(BE-Bias) (Bias=1023) -3.1415 = (-1)1* (11.00100100001…)= (-1)1* (1.100100100001…) * 21

= (-1)1* (1.100100100001…) * 2(1024-1023)

10000000000