首页 理论教育单片机应用系统中的数制与编码

单片机应用系统中的数制与编码

【摘要】:十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。各进位制中位权的值是基数的若干次幂。

所谓数制,就是多位数码中每一位的构成方法以及从低位向高位的进位规则。换个说法表述就是按进位原则进行计数称为进位计数制,简称“数制”。

1.4.1 进制数

我们在日常生活中大多使用十进制,即逢十进一,这主要是由人们的使用习惯决定的。其实在生活中还有许多不同的进位制度,如时间的表示方法是六十进制,即一小时等于六十分钟,一分钟等于六十秒等,还有常用的表示数量的单位“一打”是十二进制等。在计算机中,常用的进位制度有二进制、十进制、八进制和十六进制

1.二进制

二进制数由0和1两个符号来表示,基数为2,按逢2进1、借1算2的规则计数。例如:10110011 1010 1111000010101101。

2.十进制

十进制数由0、1、2、3、4、5、6、7、8、9十个数字符号表示,基数为10,按逢10进1、借1算10的规则计数。例如:128,23,47,335。

3.八进制

八进制数由0、1、2、3、4、5、6、7八个数字符号表示,基数为8,按“逢8进1、借1算8”的规则计数。例如:70 360 777。

4.十六进制

十六进制数由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数字符号表示,基数为16,按逢16进1、借1算16的规则计数。在C语言中表示十六进制数时,大小写字母的含义相同。例如:EF08 5ac 7BF。

5.数的“位权”概念

对十进制数335来说,百位上的3表示3个102,即300;十位上的3表示3个101,即30;个位上的5表示5个100,即5。

对二进制110来说,高位的1表示1个22,即4;低位的1表示1个21,即2;最低位的0表示0个20,即0。

可见,在数制中,各位数字所表示值的大小不仅与该数字本身大小有关,而且还与该数字所在位置有关,这就是数的“位权”。

十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。

总的来讲,无论哪种数制都有共同的“逢n进一”计数运算规律和“位权表示法”特点。n是指数制中所需要的数字字符的总个数,称为基数,例如,十进制的基数是10(数字字符的个数是10个),二进制的基数是2(数字字符的个数是0、1两个)等。数字的值与它处在的位置是确定,这个固定的位置上的值称为位权。

“位权表示法”特点用来进行数制间的转换。

读一读:

计算机中的数据表示均采用二进制数,这是因为二进制数具有以下特点:

(1)二进制数中只有0和1两个数字,因此可用二进制数表示具有两个不同稳定状态的元器件。例如,电路中有、无电流,有电流用“1”表示,则无电流用“0”表示。类似地,还比如电路中电压的高低,晶体管的导通、截止等。

(2)二进制数运算简单,大大简化了计算机中运算部件的结构。如果进制数的基数用n表示,则它们的加法、乘法运算规律条数可以用下式表示:

由上式可知,基数n的取值越小,则其运算规律越少。二进制数的加法和乘法运算规律中有3条,而十进制数加法和乘法运算规律各有55条。所以计算机中使用二进制数进行运算容易实现。

二进制数的加法和乘法运算规则如下:

0+0=0 0+1=1+0=1 1+1=10

0×0=0 0×1=1x0=0 1×1=1

(3)二进制数的两个数字0和1与逻辑代数的逻辑量取值一致,从而可以采用二进制数进行逻辑运算。这样可以应用逻辑代数作为工具来分析和设计计算机中的逻辑电路,使逻辑代数成为计算机设计的数学基础。

1.4.2 进制数之间的转换

将数由一种数制转换成另一种数制称为数制间的转换。计算机在使用数据之前先必须把其他的数制转换成计算机所能接受的二进制数,计算机在运行结束后,再把二进制数转换为人们习惯的其他数制输出。

各进位制中位权的值是基数的若干次幂。因此,用任何一种数制表示的数都可以写成按位权展开的多项式之和。设一个基数为D的数值K, K = (Kn -1 K n - 2 … K1K0 K -1 … K-m ),则K的展开为(www.chuimin.cn)

对于二进制、十进制和十六进制,其基数D分别为2、10、16。

进制转换举例:

1.二进制数转换为十进制数

二进制数转换为十进制数只需每位数按位权展开多项式相加即可将二进制数1011转换成十进制数。

(1101)2=1×23+1×22+0×21+1×20=8+4+0+1=(13)10

2.十进制数转换为二进制数

一个十进制整数要转化为二进制数,只需将该数反复除以2,其转换过程所得余数(从最后一个余数先读起)就是二进制数的表示形式。

一个十进制的小数要转化为二进制数,将该数乘以2,取乘积整数部分为相应的二进制数小数点后的最高位,再将乘积的小数部分乘以2,得次高位,如此反复直至小数部分为0或小数点后的位数达到精度要求为止。如一个十进制数既有整数又有小数部分,可按上述操作进行转换,然后进行连接。例如,将(57)10转换为二进制数。

得到:

(57)10=(111001)2

对于不同进制的数字间的转换在这里不做太多的叙述,对于初学者来讲,使用PC中的计算器来进行不同进制数字间的转换是一个方便快捷的办法,计算器的使用如图1-48所示。打开计算器软件,在“查看”下面设置,如要将十进制数“254”转换成二进制数,可以首先在计算器中选择十进制,输入数字“254”,再用鼠标单击选择二进制,这时计算器中即可显示经转换后的二进制数“11111110”。

图1-48 使用计算器进行进制转换

1.4.3 数的编码

在计算机内部,所有的信息都要使用二进制的方法来表示,因为二进制的0和1两个数字恰好与存储单元的“有”和“无”相对应。不仅如此,数的符号“+”或“-”也需要用二进制数来表示,在通常情况下,用0表示正数的符号“+”,用1表示负数的符号“-”。当数的符号和数值表示方法使用二进制时,这样的数被称为“机器码”。

1.带符号数的编码

机器码有不同的码制,对应不同的表示方法,常用的码制有原码、反码和补码三种。

(1)原码:原码用最高位表示数的符号位,数值部分用二进制的绝对值表示。

(2)反码:正数的反码与其原码相同,负数的反码是将符号位除外,其他各位按位取反。

(3)补码:正数的补码与其原码相同,负数的补码是其反码加1。

数的原码、反码和补码的表示方法见表1-11。

表1-11 数的原码、反码和补码

2.二-十进制编码(BCD)

计算机中的数据处理是以二进制数运算法则进行的。二进制数不直观、易出错,因此在计算机的输入、输出中希望以人们熟悉的十进制数形式进行。适合于十进制数的二进制编码的特殊形式,即二进制编码的二进制数,简称BCD码。BCD码是用4位二进制数给十进制数0~9十个数进行编码,称之为二-十进制数。

3.ASCII码

在计算机中除数字用二进制数表示外,字母和各种字符也必须用二进制数形式表示。目前,最普遍使用的为ASCII码。

ASCII码是美国信息交换标准码(American Standard Code for Information Interchange)的缩写,它采用7位二进制代码对字符进行编码,可以表示128个字符。