计算机中常用的数制
概念
-
使用数字量表示物理量时, 仅用一位编码一般不够用, 因此经常会使用多位数码
进位计数制
\[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取余数。
- 注意最先得到的都是离小数点最近的那一位