BCC
-
Upload
britanney-guzman -
Category
Documents
-
view
28 -
download
2
description
Transcript of BCC
nschou@nuu聯合大學資工系 周念湘.edu.tw
1
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
數字系統 聯合大學資工系 周念湘 [email protected] 3
10 進位:轉成 r 進位 「整數、小數」分開算
整數:連除 r ,取餘數 小數:連乘 r ,取整數
【範例】 766.2812510=( ? )8 766.2812510=(1376.22)8
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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)
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [email protected] 7
二進位 電腦為何使用「二進位」?
因為電腦的「元件」都是「雙態 (2 種狀態 ) 」元件 二極體: P 極、 N 極 磁蕊 :南極、北極 電壓 :高電壓、低電壓
這些「雙態」元件的狀態都可利用「電」改變之 其中一種狀態稱之為「 0 」,另一種狀態稱之為「 1 」 若該元件可持續維持在某一狀態,直至我們改變它為止,則我們稱之為「記憶體元件」
1 個這樣的記憶體元件,我們稱其為「一個 bit 」
數字系統 聯合大學資工系 周念湘 [email protected] 8
二進位 為何「元件」在任一時間點,只能存 1 或 0 ?
i.e. 為何不能同時存 1 和 0 ? 以「磁蕊」為例說明之:
假設南極為 0 ,北極為 1 同一個磁蕊同一時間只能有一種極性 , 因此 , 只能有一種狀態 , 要麼是 0, 要麼是 1
因此 , 當有人說「把 0 存入某記憶體 ( 元件 )中」 :意指「將該記憶體 ( 元件 ) 的狀態改為 0 」
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [email protected] 10
有號整數存入電腦的方式: n-bits 2 補數 (2’s complement) :儲存負整數
1 補數 (1’s complement) :為了方便計算 2 補數 Excess 2n-1:儲存實數的指數
數字系統 聯合大學資工系 周念湘 [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 補數
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [email protected] 17
(A*B)2 :「 left shift 」「+」
數字系統 聯合大學資工系 周念湘 [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 補數」做
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [email protected] 20
實數 (Floating Point) 儲存方式 以 8bits 舉例說明:
數字系統 聯合大學資工系 周念湘 [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)
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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
數字系統 聯合大學資工系 周念湘 [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