計算機中常用的數制
概念
-
使用數字量表示物理量時, 僅用一位編碼一般不夠用, 因此經常會使用多位數碼
進位計數制
\[0 \backsim 9 \rightarrow 10 \backsim 99 \rightarrow 100 \backsim 999 \rightarrow \cdots \cdots \] -
多位數碼中每一位的構成方法以及從低位到高位的進位規則稱為
數制
-
數字電路中常用技術數制
- 十進制:
0 ~ 9
- 二進制:
0
,1
- 八進制:
0 ~ 7
- 十六進制 :
0 ~ 9
,A
,B
,C
,D
,E
,F
- 十進制:
-
任何一種進位計數制中,任何一個數都由整數和小數兩部分組成。
-
兩種書寫形式:
位置計數法
,多項式表示法
計算機常用二進制位
- 計算機中常用到的二進制位數有8位、16位、32位,可以分別用2位、4位、8位十六進制數表示;
- 其他任意進制的分析方法和二進制、十進制、十六進制相同。
進制計數兩種方法
-
位置計數法
\[(N)_{R} = a_{n-1} a_{n-2} ... a_1a_0 \cdot a_{-1}a_{-2} ... a_{-m} \]- 例如: (524.27)10
\[= 5 \times 10^2 + 2 \times 10^1 + 4 \times 10^0 + 3 \times 10^{-1} + 7 \times 10^{2} \] -
多項式表示法
: 根據位置計數法, 可得到任意(R)進制數的展開式的普遍形式:\[(N)_R = \sum_{i=-m}^{n-1}{a_iR^i} \]R
稱為計數的基數
a_i
是第i位的系數
R^i
稱為第i位的權
十進制
-
基數為10, 低位和相鄰高位之間的關系為:
逢十進一
-
多項式表示法
\[(N)_{10} = \sum_{i=-m}^{n-1}{a_i \times 10^{i}} \]- 其中, a_i 是第i位的系數, 如果N的整數有n位, 小數有m位, 則:
\[i \in [ n - 1, 0] \cup[-1, -m] \]
- 其中, a_i 是第i位的系數, 如果N的整數有n位, 小數有m位, 則:
二進制
-
每一位僅有0和1兩個可能的數碼
-
計數基數為2, 進位關系為:
逢二進一
-
任何一個二進制數D均可以展開為:
\[(N)_{2} = \sum_{i=-m}^{n-1}{a_i \times 2^{i}} \]- 如: (101.11)2
\[= 1×2^2 + 0×2^1 + 1×2^0 + 1×2^{-1} + 1×2^{-2} \]
- 如: (101.11)2
八進制
-
八個 數碼:0~7
-
計數基數8, 進位關系為:
逢八進一
\[(N)_{8} = \sum_{i=-m}^{n-1}{a_i \times 8^{i}} \]- 如: (145.37)8
\[=1×8^2 + 4×8^1 + 5×8^0 + 3×8^{-1} + 7×8^{-2} \]
- 如: (145.37)8
十六進制
-
十六個不同數碼:
0 ~ 9
,A
,B
,C
,D
,E
,F
-
計數基數16, 進位關系為:
逢十六進一
\[(N)_{16} = \sum_{i=-m}^{n-1}{a_i \times 16^{i}} \]- 如: (4C.F8)16
\[=4×16^1 + C×16^0 + F×16^{-1} + 8×16^{-2} \]
- 如: (4C.F8)16
- 十六進制中的
A ~ F
與十進制的對應關系為:- A ~ 10
- B ~ 11
- C ~ 12
- D ~ 13
- E ~ 14
- F ~ 15
進制轉換
進制互換方法
-
十進制轉換成任意進制R的普遍方法:
-
小數部分乘以R取進位
-
整數部分除以R取余數
注意方向
-
-
任意進制R轉換成十進制的普遍方法:
- 按多項式展開並計算;
-
二進制和十六/八進制相互轉換的方法:
- 按1位十六/八進制對應於4位/3位/二進制數的對應關系進行轉換
-
任意進制M和任意進制N之間的相互轉換方法,
-
先將M(N)進制數轉換成十進制數,
-
再將十進制數轉換成N(M)進制數
-
二 > 十
-
按權展開法
: 將二進制數展開,再將各項的, 數值按十進制數相加,即得到十進制的值;- 例 (1101.011)2
\[\begin{align} &= 1×2^3 +1×2^2 +0×2^1 +1×2^0 +0×2^{-1} +1×2^{-2} +1×2^{-3} \\ &= 8 + 4 + 0 + 1 + 0 + 0.25 + 0.125 \\ &= (13.375)_{10} \end{align} \]
- 例 (1101.011)2
十 > 二
-
整數部分
-
對於十進制整數(N)10, 假設等值的二進制為:
\[(a_{n-1}a_{n-2}\cdots a_0)_2 \] -
那么,
\[\begin{align} (N)_{10} &= a_{n-1}2^{n-1}+a_{n-2}2^{n-2}+...+a_12^1 + a_02^0 \\ &= 2(a_{n-1}2^{n-2}+a_{n-2}2^{n-3}...+a_1) + a_0 \end{align} \] -
則: 將(N)10 除2, 余數為a_0;
-
如果上式括號內的部分(商)再除以2,余數即a_1;
-
依此類推, 即可求得:
\[a_2a_3...a_{n-2}a_{n-1} \] -
由以上分析出來胡規律, 可以得到整數部分的轉換方法:
- 將十進制數
反復除2逆序取余數
- 將十進制數
-
-
小數部分
-
對於十進制小數(S)10, 假設等值的二進制數為:
\[(0.a_{-1} a_{-2} a_{-3}...a_{-m})_2 \] -
那么,
\[\begin{align} (S)_{10} &= a_{-1}2^{-1} + a_{-2}2^{-2}+...+a_{-m}2^{-m} & (1-1)\\ 2(S)_{10} &= a_{-1}+(a_{-2}2^{-1}+a_{-3}2^{-2}+...+a_{-m}2^{-m+1}) &(1-2) \end{align} \] -
規律: 將(S)10乘以2, 整數進位就是a_-1
-
對式(1-2)中括號內部分乘以2, 整數進位即:
\[a_{-2} \] -
依次類推, 既得:
\[a_{-3}a_{-4}...a_{-m} \] -
由前面的分析可以得到小數部分的轉換方法:
- 將十進制數反復乘2進行進位, 取順序進位值
-
不是所有十進制小數都能完整轉換為二進制小數.可能過程會丟失精度.
-
二 > 十六
-
每
四位二進制數
對應一位十六進制數
, 由低
位到高
位排列 -
不足四位的,整數部分高位補0,小數部分低位補0
-
例如: (11010110.0101101)2
\[\begin{align} (& \underline{1101} \ \underline{0110}.\underline{0101}\ \underline{1010})_2 \\ & \ \ \ \downarrow \ \ \ \ \downarrow \ \ \ \ \ \ \downarrow \ \ \ \ \downarrow \\ = (&\ \ \ D \ \ \ \ \ \ 6 \ \ \ . \ \ \ \ 5 \ \ \ \ \ A \ \ )_{16} \end{align} \]
二 > 八
-
轉換方法: 每三位二進制數對應一位八進制數, 由低位到高位排列
-
不足三位的,整數部分高位補0,小數部分低位補0。
-
例如: (11010110.01011010)2
\[\begin{align} (& \underline{011} \ \underline{010} \ \underline{110}. \underline{010} \ \underline{110} \ \underline{100})_2 \\ & \ \downarrow \ \ \ \downarrow \ \ \downarrow \ \ \ \ \downarrow \ \ \ \downarrow \ \ \ \downarrow \\ = (&\ \ 3 \ \ \ \ \ 2 \ \ \ \ \ 6. \ \ \ \ \ 2 \ \ \ \ \ 6 \ \ \ \ \ 4 \ \ )_{8} \end{align} \]
十六 > 二
-
轉換方法: 與二 > 十六轉換類似,將十六進制數的每一位用等值的四位二進制數代替。
-
例如: (7C5.F9)16
\[\begin{align} (& \ \ \ 7 \ \ \ \ \ \ \ C \ \ \ \ \ 5. \ \ \ \ \ \ \ F \ \ \ \ \ \ \ 9 \ \ \ )_{16} \\ & \ \ \downarrow \ \ \ \ \ \downarrow \ \ \ \ \downarrow \ \ \ \ \ \ \downarrow \ \ \ \ \ \downarrow \\ = (& 0111 \ 1100 \ 0101. \ 1111 \ 1001)_2 \\ \end{align} \]
八 > 二
- 與八 > 二轉換類似,將八進制數的每一位用等值的三位二進制數代替
\[\begin{align} (&\ \ 7 \ \ \ \ \ 5 \ \ \ \ 4. \ \ \ \ 3 \ \ \ \ \ 6 \ \ )_{8} \\ & \ \downarrow \ \ \ \downarrow \ \ \downarrow \ \ \downarrow \ \ \ \downarrow \\ = (& 111 \ 101 \ 100. 011 \ 110)_2 \\ \end{align} \]
十六 > 十
-
方法:與二 - 十 轉換類似,利用式(1-5)將十六進制數
按權展開
,相加即得。 -
八進制與十六進制方法相同
-
例: (B8E.A)16
\[\begin{align} &= B×16^2 +8×16^1 +E×16^0 +A×16^{-1} \\ &= 11×16^2 +8×16^1 +14×16^0 +10×16^{-1} \\ &= 2816+128+14+0.625 \\ &=(2958.625)_{10} \end{align} \]
十 > 十六
-
轉換方法1:先將十進制數轉換為二進制數,再將二進制數轉換為十六進制數。
-
轉換方法2:與十進制轉換成二進制的方法類似,小數部分乘以16取進位,整數部分除以16取余數。
-
八進制與十六進制方法相同。
-
例如: (795.6015625)10 = (31B.9A)16
-
十進制轉換成任意進制R的普遍方法:小數部分乘以R取進位,整數部分除以R取余數。
- 注意最先得到的都是離小數點最近的那一位