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

聯合大學資工系 周念湘 [email protected] BCC 數字系統. 聯合大學資工系 周念湘 [email protected] 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

  • View
    274

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

1

BCC

數字系統

Page 2: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

3

10 進位:轉成 r 進位

「整數、小數」分開算 整數:連除 r ,取餘數 小數:連乘 r ,取整數

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

Page 4: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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 = (104

10) 10000 = (24)

Page 6: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

7

二進位

電腦為何使用「二進位」? 因為電腦的「元件」都是「雙態 (2 種狀態 ) 」元件

二極體: P 極、 N 極 磁蕊 :南極、北極 電壓 :高電壓、低電壓

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

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

Page 8: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

8

二進位

為何「元件」在任一時間點,只能存 1 或 0 ? i.e. 為何不能同時存 1 和 0 ? 以「磁蕊」為例說明之:

假設南極為 0 ,北極為 1 同一個磁蕊同一時間只能有一種極性 ,

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

Page 9: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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 0

0001 1 1

0010 2 2

0011 3 3

0100 4 4

0101 5 5

0110 6 6

0111 7 71000 8 8

1001 9 9

1010 A 10

1011 B 11

1100 C 12

1101 D 13

1110 E 14

1111 F 15

Page 10: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

10

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

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

Page 11: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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

8

9

10

11

12

13

14

15

8

9

10

11

12

13

14

15

Page 14: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

14

(A+B)2 : illegal : cn⊕cn-1=1 C=cncn-1cn-2cn-3…c0

A= an-1an-2an-3…a0

B= 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…c0

A= 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

9

10

11

12

13

14

15

8

9

10

11

12

13

14

15

Page 15: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

15

(A+B)2 : illegal : cn⊕cn-1=1 C=cncn-1cn-2cn-3…c0

A= 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…c0

A= 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 →← underflow8

9

10

11

12

13

14

15

8

9

10

11

12

13

14

15

Page 16: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

16

(A+B)2 : legal : cn⊕cn-1=0 C=cncn-1cn-2cn-3…c0

A= an-1an-2an-3…a0

B= 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

9

10

11

12

13

14

15

8

9

10

11

12

13

14

15

Page 17: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

17

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

Page 18: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

18

(A/B)2 : 「 left shift 」「 - 」

110011002/1012

R1 = 110011002 -(101)2*25 Q1=1*25 = 1011002

R2 = 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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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

7

6

5

4

3

2

1

0

2’s complement

Excess-8

15

14

13

12

11

10

9

8

Page 20: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

20

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

Page 21: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

21

IEEE 754 : 1. single precision31 0

30 Biased Exponent 23

excess-bias22 significand 0

Mantissa31

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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

22

IEEE 754 : 1. single precision31 0

30 Biased Exponent 23

excess-12722 significand 0

Mantissa31

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: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

數字系統 聯合大學資工系 周念湘 [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-102351 significand 0

Mantissa63

Sign

Page 24: 聯合大學資工系 周念湘 nschou@nuu.edu.tw1 BCC 數字系統. 聯合大學資工系 周念湘 nschou@nuu.edu.tw 2 r 進位:轉成 10 進位 r 代表「基底」 10 進位:

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

24

IEEE 754 : 2. double precision64 0

62 Biased Exponent 52

excess-102351 significand 0

Mantissa63

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