聯合大學資工系 周念湘 BCC 數字系統
聯合大學資工系 周念湘 2 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 = (1* * * * * *10 -3 ) 10 = (1*8 2 +4*8 1 +7*8 0 +2* * *8 -3 ) 10 就某一個「數量」而言,不同進位,只是表示法不同, 他們都是表示「同一個數量」,理論上必須相同。 整數:各進位間,有「 1 對 1 」對應 實數: 10 進位轉成 2 進位時,可能無法用有限的位數表示! 在電腦的世界中, 整數、實數以不同方式存放
數字系統 聯合大學資工系 周念湘 3 10 進位:轉成 r 進位 「整數、小數」分開算 整數:連除 r ,取餘數 小數:連乘 r ,取整數 【範例】 =( ? ) 8 =( ) 8
數字系統 聯合大學資工系 周念湘 4 整數: n 位數, r 補數 r 代表「基底」 10 進位: r = 10 2 進位: r = 2 D r : 表示某個 r 進位的整數 我們必須明訂這個整數是幾位數 ( 令為 n), 位數不夠需補 0 D r ≡ (d n-1 d n-2 …d 0 ) r r 補數,代表 r 進位系統中的「負數」 有了 r 補數,我們就可用加法來做減法,簡化硬體線路 ∵ A-B = A+(-B) = A+(B 的 r 補數 ) ∴ -B= B 的 r 補數
數字系統 聯合大學資工系 周念湘 5 整數: n 位數, r 補數 既然,「 r 補數」代表 r 進位系統中的「負數」 『 D r ≡ (d n-1 d n-2 …d 0 ) r >0 』 的 r 補數= -D r = r n -D r ∵ D r + -D r =0 而 D r +(r n -D r ) = r n = (1 n 0 n-1 0 n-2 …0 0 ) r ∵我們只計 n 位數 ∴將 1 n 丟掉 ( 忽略 ) 即得到正確的答案 0 例子:求 (1234) 10 的 10 補數: 求 (1011) 2 的 2 補數: ( ( = ( ) 0101 = ( ) 1234 ( ( = ( ) = (2 4 )
數字系統 聯合大學資工系 周念湘 6 整數: n 位數, r 補數 「 r 補數」比較不好算 「 r-1 補數」 +1, 令 r’=r-1 『 D r ≡ (d n-1 d n-2 …d 0 ) r 』 的 r-1 補數= -D r -1 = r n -1-D r = (r’ n-1 r’ n-2 …r’ 0 ) r - (d n-1 d n-2 …d 0 ) r 例子:求 (1234) 10 的 9 補數: 求 (1011) 2 的 1 補數: ( ( = ( ) 0100 = ( ) 「 r 補數」 = 「 r-1 補數」 +1 例子:求 (1234) 10 的 10 補數: 求 (1011) 2 的 2 補數: 8765 = ( ) 0100 = ( ) 1 (+ 1 ( = ( ) 0101 = ( ) 剛好: 1 0, 0 1
數字系統 聯合大學資工系 周念湘 7 二進位 電腦為何使用「二進位」? 因為電腦的「元件」都是「雙態 (2 種狀態 ) 」元件 二極體: P 極、 N 極 磁蕊 :南極、北極 電壓 :高電壓、低電壓 這些「雙態」元件的狀態都可利用「電」改變之 其中一種狀態稱之為「 0 」,另一種狀態稱之為「 1 」 若該元件可持續維持在某一狀態,直至我們改變它為止, 則我們稱之為「記憶體元件」 1 個這樣的記憶體元件,我們稱其為「一個 bit 」
數字系統 聯合大學資工系 周念湘 8 二進位 為何「元件」在任一時間點,只能存 1 或 0 ? i.e. 為何不能同時存 1 和 0 ? 以「磁蕊」為例說明之: 假設南極為 0 ,北極為 1 同一個磁蕊同一時間只能有一種極性, 因此, 只能有一種狀態, 要麼是 0, 要麼是 1 因此, 當有人說「把 0 存入某記憶體 ( 元件 ) 中」 : 意指「將該記憶體 ( 元件 ) 的狀態改為 0 」
數字系統 聯合大學資工系 周念湘 9 bit | nibble | Byte 任何資料在電腦中, 必是以「 0101… 」的形式存入, 該形式稱之為「 bit pattern 」 吾人以「 β 2 」 表示之。 10 進位無號整數 ( α 10 ) 轉成 2 進位 ( β 2 ) 寫成「 α 10 = β 2 」 1bit 只能表示 2 種狀態 當我們需要多種狀態時, 就需要多個 bit 組合起來,看成一組。 nibble: 4 bits 看成一組 有 2 4 = 16 種狀態 (bit pattern) Byte : 8 bits 看成一組 有 2 8 = 256 種狀態 (bit pattern) 4bit :雖然有 16 種狀態 (bit pattern) , 但是,任一時間點, 只能「存」其中一種狀態 (bit pattern) Bit pattern16 無號整數 A B C D E F15
數字系統 聯合大學資工系 周念湘 10 有號整數存入電腦的方式: n-bits 2 補數 (2’s complement) :儲存負整數 1 補數 (1’s complement) :為了方便計算 2 補數 Excess 2 n-1 :儲存實數的指數
數字系統 聯合大學資工系 周念湘 11 1’s complement : 1 補數 (1’s complement): n-bits D 10 β 2 = α 10 formula: D 10 ≧ 0 D 10 =B 2 ≡ β 2 D 10 < 0 (1) -D 10 =P 2 ≧ 0 (2) β 2 ≡ 「 P 2 的 1 補數」 =~P 2 =(2 n -1) 10 -P 2 =(2 n -1) 10 +D 10 = α 10 ~P 2 ≡ {P 2 各 bit : 0 1, 1 0} 兩種 0 :+ 0, -0 以 4-bits 為例: 0000, 1111 有號整數 1 補數
數字系統 聯合大學資工系 周念湘 12 2’s complement : 2 補數 (1’s complement)+1 D 10 β 2 = α 10 formula: D 10 ≧ 0 D 10 =B 2 =β 2 MSB=0 D 10 < 0 //D 10 =-4 10 (1) -D 10 = P 2 //P 2 =4 10 = (2) β 2 = P 2 的 2 補數 ( ) =~P 2 +1 =(2 n -1) 10 -P 2 +1 =(2 n ) 10 +D 10 = α 10 MSB=1 X-Y=X+(-Y) -Y=Y 的 2 補數 2 補數 12
數字系統 聯合大學資工系 周念湘 13 2’s complement : 2 補數 D 10 < 0 「令 S’ 2 = D’ 10 」 D 10 β 2 ≡(1S’) 2 = α 10 =2 n +D 10 =2 n-1 + S’ 2 =2 n-1 +D’ 10 D 10 = 2 n-1 + D’ n = D’ n-1 舉例: D 10 =-6 =10 10 = S’ 2 =010 2 = 2 10 = D’ 10 D 10 =-6= = D’ = D’
數字系統 聯合大學資工系 周念湘 14 (A+B) 2 : illegal : c n ⊕ c n-1 =1 C=c n c n-1 c n-2 c n-3 …c 0 A= a n-1 a n-2 a n-3 …a 0 B= b n-1 b n-2 b n-3 …b 0 -2 n-1 ≦ A+B=Z < 2 n-1 (c n =0) ⊕ (c n-1 =1)=1 overflow c n =0, c n-1 =1 a n-1 =b n-1 =0 C=01c n-2 c n-3 …c 0 A= 0a n-2 a n-3 …a 0 >0 B= 0b n-2 b n-3 …b 0 >0 ( Z= 1z n-2 z n-3 …z 0 <0 ( 正+正變負 ) c n-1 =1 A+B ≧ 2 n-1 →← overflow
數字系統 聯合大學資工系 周念湘 15 (A+B) 2 : illegal : c n ⊕ c n-1 =1 C=c n c n-1 c n-2 c n-3 …c 0 A= a n-1 a n-2 a n-3 …a 0 B= b n-1 b n-2 b n-3 …b 0 -2 n-1 ≦ A+B=Z < 2 n-1 (c n =1) ⊕ (c n-1 =0)=1 underflow c n =1, c n-1 =0 a n-1 =b n-1 =1 (A,B<0) C=10c n-2 c n-3 …c 0 A= 1a n-2 a n-3 …a 0 <0 令 A=1A’ B= 1b n-2 b n-3 …b 0 <0 (+ 令 B=1B’ Z= 0z n-2 z n-3 …z 0 ≧ 0 ( 負+負變正 ) c n-1 =0 0 ≦ A’+B’ 0) A+B=(A’- 2 n-1 )+(B’- 2 n-1 ) =A’+B’- 2 n <2 n-1 -2 n <-2 n-1 →← underflow
數字系統 聯合大學資工系 周念湘 16 (A+B) 2 : legal : c n ⊕ c n-1 =0 C=c n c n-1 c n-2 c n-3 …c 0 A= a n-1 a n-2 a n-3 …a 0 B= b n-1 b n-2 b n-3 …b 0 -2 n-1 ≦ A+B < 2 n-1 c n ⊕ c n-1 =0 c n =1, c n-1 =1 drop c n 試證明 A * B 0 c n =0, c n-1 =0 do nothing 試證明 A * B<0 則 A + B<0 A+B<0 (MSB=1) 轉成 10 進位時, 結果需再取 2 補數,前面加上負號。
數字系統 聯合大學資工系 周念湘 17 (A*B) 2 :「 left shift 」「+」
數字系統 聯合大學資工系 周念湘 18 (A/B) 2 : 「 left shift 」「 - 」 /101 2 R1 = (101) 2 *2 5 Q1=1*2 5 = R2 = (101) 2 *2 3 Q2=1*2 3 = Ans: Q=Q1+Q2= = =40 10 R=R2 = = 4 10 驗證: ( ) 2 /101 2 = /5 10 =40 餘 4 減法會用「加 2 補數」做
數字系統 聯合大學資工系 周念湘 19 Excess 2 n-1 表示法 excess-8 (2 3 ) D 10 β 2 = α 10 = ( D +2 n-1 ) 10 D 10 = 6 β 2 = = =( 6 +8) 10 D 10 ≧ 0 β 2 是 2 n-1 -D 10 的 2 補數 D 10 < 0 β 2 是 2 n-1 +D 10 的 2 進位 β 2 = α 10 α n-1 β 2 = α 10 α 10 if α 10 <2 n-1 α n otherwise ’s complement Excess
數字系統 聯合大學資工系 周念湘 20 實數 (Floating Point) 儲存方式 以 8bits 舉例說明:
數字系統 聯合大學資工系 周念湘 21 IEEE 754 : 1. single precision Biased Exponent 23 excess-bias 22 significand 0 Mantissa 31 Sign ExponentBiased expMantissaValue -126 to 1271 to 254any+/- real ( )0 (+/- ) ∞ ( )≠0≠0NaN ( )≠0≠0underflow +127 value=(-1) S * (1+M) * 2 (BE-Bias) (Bias=127)
數字系統 聯合大學資工系 周念湘 22 IEEE 754 : 1. single precision Biased Exponent 23 excess significand 0 Mantissa 31 Sign value=(-1) S * (1+M) * 2 (BE-Bias) (Bias=127) = (-1) 1 * ( … ) = (-1) 1 * ( … ) * 2 1 = (-1) 1 * ( … ) * 2 ( )
數字系統 聯合大學資工系 周念湘 23 IEEE 754 : 2. double precision ExponentBiased expMantissaValue to to 2046any+/- real ( 11…11 2 )0 (+/- ) ∞ ( 11…11 2 )≠0≠0NaN ( 00…00 2 )≠0≠0underflow value=(-1) S * (1+M) * 2 (BE-Bias) (Bias=1023) Biased Exponent 52 excess significand 0 Mantissa 63 Sign
數字系統 聯合大學資工系 周念湘 24 IEEE 754 : 2. double precision Biased Exponent 52 excess significand 0 Mantissa 63 Sign value=(-1) S * (1+M) * 2 (BE-Bias) (Bias=1023) = (-1) 1 * ( … ) = (-1) 1 * ( … ) * 2 1 = (-1) 1 * ( … ) * 2 ( )