第 1章 数制与编码第 1章 数制与编码
1.1 数制
1.2 编码第 1章 数制与编码
1.1 数 制
1.1.1 进位计数制按进位的原则进行计数,称为进位计数制 。 每一种进位计数制都有一组特定的数码,例如十进制数有 10 个数码,二进制数只有两个数码,而十六进制数有 16 个数码 。
每种进位计数制中允许使用的数码总数称为基数或底数 。
在任何一种进位计数制中,任何一个数都由整数和小数两部分组成,并且具有两种书写形式:位置记数法和多项式表示法 。
第 1章 数制与编码
1,十进制数 (Decimal)
① 采用 10 个不同的数码 0,1,2,…,9和一个小数点 (.)。
② 进位规则是,逢十进一,。
若干个数码并列在一起可以表示一个十进制数 。 例如在
435.86这个数中,小数点左边第一位的 5代表个位,它的数值为 5; 小数点左边第二位的 3 代表十位,它的数值为 3× 101;
左边第三位的 4 代表百位,它的数值为 4× 102;小数点右边第一位的值为 8× 10-1;小数点右边第二位的值为 6× 10-2。 可见,
数码处于不同的位置,代表的数值是不同的 。 这里 102,101、
100,10-1,10-2 称为权或位权,即十进制数中各位的权是基数 10 的幂,各位数码的值等于该数码与权的乘积 。 因此有第 1章 数制与编码
21012 10610810510410486.4 3 5
上式左边称为位置记数法或并列表示法,右边称为多项式表示法或按权展开法 。
一般,对于任何一个十进制数 N,都可以用位置记数法和多项式表示法写为






1
2
2
1
1
0
0
1
1
2
2
1
1
21012110
10
1010
1010101010
)(
n
mi
i
i
m
m
n
n
n
n
mnn
a
aa
aaaaa
aaaaaaaN
第 1章 数制与编码式中,n代表整数位数,m代表小数位数,ai(-m≤i≤n-1)表示第 i位数码,它可以是 0,1,2,3,…,9 中的任意一个,
10i为第 i位数码的权值 。
上述十进制数的表示方法也可以推广到任意进制数 。 对于一个基数为 R(R≥2)的 R进制计数制,数 N可以写为





1
2
2
1
1
0
0
1
1
2
2
1
1
210121
)(
n
mi
i
i
m
m
n
n
n
n
mnnR
Ra
RaRa
RaRaRaRaRa
aaaaaaaN
式中,n代表整数位数,m代表小数位数,ai为第 i位数码,它可以是 0、
1,…,(R-1)个不同数码中的任何一个,Ri为第 i位数码的权值 。
(1-2)
第 1章 数制与编码
2,二进制数二进制数的进位规则是,逢二进一,,其进位基数 R=2,
每位数码的取值只能是 0或 1,每位的权是 2的幂 。 表 1-1列出了二进制位数,权和十进制数的对应关系 。
表 1-1 2的幂与十进制值第 1章 数制与编码任何一个二进制数,根据式 (1-2)可表示为





1
2
2
1
1
0
0
1
1
2
2
1
1
2101212
2
22
22222
)(
n
mi
i
i
m
m
n
n
n
n
mnn
a
aa
aaaaa
aaaaaaaN
例如:
10
3210123
2
)3 7 5.11(
21212021212021)0 1 1.1 0 1 1(

第 1章 数制与编码可见,一个数若用二进制数表示要比相应的十进制数的位数长得多,但采用二进制数却有以下优点:
① 因为它只有 0,1 两个数码,在数字电路中利用一个具有两个稳定状态且能相互转换的开关器件就可以表示一位二进制数,因此采用二进制数的电路容易实现,且工作稳定可靠 。
② 算术运算规则简单 。 二进制数的算术运算和十进制数的算术运算规则基本相同,惟一区别在于二进制数是
,逢二进一,及,借一当二,,而不是,逢十进一,及
,借一当十,。
第 1章 数制与编码例如:
第 1章 数制与编码
3,八进制数 (Octal)
八进制数的进位规则是,逢八进一,,其基数 R=8,采用的数码是 0,1,2,3,4,5,6,7,每位的权是 8 的幂 。 任何一个八进制数也可以根据式 (1-2)表示为

1
8 8)(
n
mi
i
iaN
例如:
10
1012
8
)5.254(5.0687643
84868783)4.376(


第 1章 数制与编码
4,十六进制数 (Hexadecimal)
十六进制数的特点是:
① 采用的 16 个数码为 0,1,2,…,9,A,B、
C,D,E,F。 符号 A~F分别代表十进制数的 10~15。
② 进位规则是,逢十六进一,,基数 R=16,每位的权是 16的幂 。
任何一个十六进制数,也可以根据式 (1-2)表示为

1
16 16)(
n
mi
i
iaN
102101216 )06 64.93 9(16116116111610163)113(AB
例如:
第 1章 数制与编码
1.1.2 进位计数制之间的转换
1.
1) 二进制数转换成十进制数 ——
二进制数转换成十进制数时,只要将二进制数按式 (1-
3)展开,然后将各项数值按十进制数相加,便可得到等值的十进制数 。 例如:
10211242 )75.22(2121212121)11.10 11 0(
同理,若将任意进制数转换为十进制数,只需将数
(N)R写成按权展开的多项式表示式,并按十进制规则进行运算,便可求得相应的十进制数 (N)10。
第 1章 数制与编码
2)
① 整数转换 ——除 2取余法 。 若将十进制整数 (N)10转换为二进制整数 (N)2,则可以写成
01
01
1
2
3
2
1
1
0
0
1
1
2
2
1
110
2
2222
2222)(
aQ
aaaaa
aaaaN
n
n
n
n
n
n
n
n



)(
如果将上式两边同除以 2,所得的商为
)222( 11232211 aaaaQ nnnn
余数就是 a0。
第 1章 数制与编码同理,这个商又可以写成
1242311 )22(2 aaaaQ nnnn
显然,若将上式两边再同时除以 2,则所得余数是 a1。 重复上述过程,直到商为 0,就可得二进制数的数码 a0、
a1,…,an-1 。
第 1章 数制与编码例如,将 (57)10转换为二进制数:
第 1章 数制与编码
② 小数转换 ——乘 2取整法 。 若将十进制小数 (N)10转换为二进制小数 (N)2,则可以写成
mmaaaN 222)( 221110
将上式两边同时乘以 2,便得到
)22()(2 112110 mmaaaN
令小数部分
112312 )222( Faaa mm
则上式可写成
1110)(2 FaN
因此,2(N)10乘积的整数部分就是 a-1。 若将 2(N)10乘积的小数部分 F1再乘以 2,则有第 1章 数制与编码
)222(2 2241321 mmaaaaF所得乘积的整数部分就是 a
-2。 显然,重复上述过程,便可求出二进制小数的各位数码 。
例如,将 (0.724)10转换成二进制小数。
第 1章 数制与编码可见,小数部分乘 2取整的过程,不一定能使最后乘积为 0,因此转换值存在误差 。 通常在二进制小数的精度已达到预定的要求时,运算便可结束 。
将一个带有整数和小数的十进制数转换成二进制数时,必须将整数部分和小数部分分别按除 2取余法和乘 2
取整法进行转换,然后再将两者的转换结果合并起来即可 。
同理,若将十进制数转换成任意 R进制数 (N)R,则整数部分转换采用除 R取余法;小数部分转换采用乘 R取整法 。
第 1章 数制与编码
2,二进制数与八进制数,十六进制数之间的相互转换八进制数和十六进制数的基数分别为 8=23,16=24,所以三位二进制数恰好相当一位八进制数,四位二进制数相当一位十六进制数,它们之间的相互转换是很方便的 。
,分别向左,向右,将二进制数按每三位一组分组 (不足三位的补 0),然后写出每一组等值的八进制数 。
例如,求 (01101111010.1011)2的等值八进制数:
第 1章 数制与编码例如,求 (01101111010.1011)2的等值八进制数:
二进制 001 101 111 010,101 100
八进制 1 5 7 2,5 4
所以 (01101111010.1011)2=(1572.54) 8
二进制数转换成十六进制数的方法和二进制数与八进制数的转换相似,从小数点开始分别向左,向右将二进制数按每四位一组分组 (不足四位补 0),然后写出每一组等值的十六进制数 。
第 1章 数制与编码例如,将 (1101101011.101)转换为十六进制数:
00 11 01 10 10 11,10 10
3 6 B,A
所以 (1101101011.101)2=(36B.A)16
八进制数,十六进制数转换为二进制数的方法可以采用与前面相反的步骤,即只要按原来顺序将每一位八进制数 (或十六进制数 )用相应的三位 (或四位 )二进制数代替即可 。
例如,分别求出 (375.46)8,(678.A5)16的等值二进制数:
八进制 3 7 5,4 6 十六进制 6 7 8,A 5
二进制 011 111 101,100 110 二进制 0110 0111 1000.1010 0101
所以 (375.46)8=(011111101.100110)2,(678.A5)16=(011001111000.10100101)2
第 1章 数制与编码
1.2 编 码
1.2.1 二 — 十进制编码 (BCD码 )
二 —十进制编码是用四位二进制码的 10 种组合表示十进制数 0~9,简称 BCD码 (Binary Coded Decimal) 。
这种编码至少需要用四位二进制码元,而四位二进制码元可以有 16 种组合 。 当用这些组合表示十进制数 0~9时,
有六种组合不用 。 由 16 种组合中选用 10 种组合,有
1010
16 109.2)!1016(
!16
A
第 1章 数制与编码表 1-2 几种常用的 BCD
十进制数 8421码 5421码 2421码 余 3 码 BCD Gray码
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
0001
0010
0011
0100
1000
1001
1010
1011
1100
0000
0001
0010
0011
0100
1011
1100
1101
1110
1111
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
0000
0001
0011
0010
0110
0111
0101
0100
1100
1000
第 1章 数制与编码
1,8421 BCD码
8421 BCD码是最基本和最常用的 BCD码,它和四位自然二进制码相似,各位的权值为 8,4,2,1,故称为有权 BCD码 。 和四位自然二进制码不同的是,它只选用了四位二进制码中前 10 组代码,即用 0000~1001分别代表它所对应的十进制数,余下的六组代码不用 。
第 1章 数制与编码
2,5421 BCD码和 2421 BCD
5421 BCD码和 2421 BCD码为有权 BCD码,它们从高位到低位的权值分别为 5,4,2,1和 2,4,2,1。 这两种有权 BCD码中,有的十进制数码存在两种加权方法,例如,
5421 BCD码中的数码 5,既可以用 1000表示,也可以用 0101
表示,2421 BCD码中的数码 6,既可以用 1100表示,也可以用 0110表示 。 这说明 5421 BCD码和 2421 BCD码的编码方案都不是惟一的,表 1-2只列出了一种编码方案 。
表 1-2中 2421 BCD码的 10 个数码中,0和 9,1和 8,2和 7、
3和 6,4和 5的代码的对应位恰好一个是 0时,另一个就是 1。
我们称 0和 9,1和 8互为反码 。 因此 2421 BCD码具有对 9互补的特点,它是一种对 9的自补代码 (即只要对某一组代码各位取反就可以得到 9的补码 ),在运算电路中使用比较方便 。
第 1章 数制与编码
3,余 3
余 3 码是 8421 BCD码的每个码组加 3 (0011)形成的 。 余
3 码也具有对 9 互补的特点,即它也是一种 9 的自补码,所以也常用于 BCD码的运算电路中 。
用 BCD码可以方便地表示多位十进制数,例如十进制数
(579.8)10可以分别用 8421 BCD码,余 3 码表示为码余码
3
8 4 2 110
)1 0 1 1.1 1 0 01 0 1 01 0 0 0(
)1 0 0 0.1 0 0 10 1 1 10 1 0 1()8.5 7 9(
B C D
第 1章 数制与编码
1.2.2 可靠性编码
1,Gray码 (格雷码 )
Gray码也称循环码,其最基本的特性是任何相邻的两组代码中,仅有一位数码不同,因而又叫单位距离码 。
Gray码的编码方案有多种,典型的 Gray码如表 1-3所示 。
从表中看出,这种代码除了具有单位距离码的特点外,还有一个特点就是具有反射特性,即按表中所示的对称轴为界,
除最高位互补反射外,其余低位数沿对称轴镜像对称 。 利用这一反射特性可以方便地构成位数不同的 Gray码 。
第 1章 数制与编码
Gray码的单位距离特性有很重要的意义 。 假如两个相邻的十进制数 13 和 14,相应的二进制码为 1101和 1110。 在用二进制数作加 1 计数时,如果从 13 变 14,二进制码的最低两位都要改变,但实际上两位改变不可能完全同时发生,若最低位先置 0,然后次低位再置 1,则中间会出现 1101—1100—
1110,即出现暂短的误码 1100,而 Gray码因只有一位变化,
因而杜绝了出现这种错误的可能 。
BCD Gray码是一种具有单位距离特性的 BCD码,其编码方案也很多,表 1-2最右边仅列出了一种,它有前九组代码与典型的四位 Gray码相同,仅最后一组代码不同,用 1000代替了 Gray码的 1101,这是因为从最大数 9 返回到 0,也应具有单位距离特性 。
第 1章 数制与编码表 1-3 典型的 Gray码第 1章 数制与编码
2,奇偶校验码代码 (或数据 )在传输和处理过程中,有时会出现代码中的某一位由 0 错变成 1,或 1 变成 0。 奇偶校验码是一种具有检验出这种错误的代码,奇偶校验码由信息位和一位奇偶检验位两部分组成 。
信息位是位数不限的任一种二进制代码 。
检验位仅有一位,它可以放在信息位的前面,也可以放在信息位的后面 。 它的编码方式有两种:
使得一组代码中信息位和检验位中,1”的个数之和为奇数,称为奇检验;
使得一组代码中信息位和检验位中,1”的个数之和为偶数,称为偶检验。
第 1章 数制与编码表 1-4 带奇偶检验的 8421 BCD码第 1章 数制与编码
1.2.3 字符代码 表 1-5 ASCII码第 1章 数制与编码
ASCII码采用七位二进制数编码,因此可以表示
128 个字符 。 从 表 中 可 见,数字 0~9,相应用
0110000~0111001来表示,B8通常用作奇偶检验位,但在机器中表示时,常使其为 0,因此 0~9的 ASCII码为
30H~39H,大写字母 A~Z的 ASCII码为 41H~5AH等 。