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