



数制是人们对事物数量计数的一种统计规律。虽然一个数可以用不同计数制形式表示它的大小,但该数的量值是相等的。电子计算机包括单片机都是一种处理信息的机器。日常生活中,习惯于使用十进制数,但在数字电路和电子计算机中,其电气元件最易实现的是两种稳定状态:器件的“开”与“关”;电平的“高”与“低”。所以适合使用二进制数,通常用1和 0两个数码。采用二进制数的“0”和“1”可以很方便地表示机内的数据运算与存储。由于用二进制表示一个数,所用的数码长,书写和阅读不方便,所以书写时又常将二进制数转换为八进制数或十六进制数。
1.计数制
人们在日常生活中,常用多种进制的数制系统,最广泛使用的是十进制,这是一种逢十进一的计数方法。任何一个十进制数都可以表示为:
式中,10称为十进制的基数,而所在数位i的权为10 i 。对任意进制来说,所谓基数,就是用来表示数时可以选用的不同数字的个数。所以十进制的基数为 10,用来表示数时可以选用的数 x i 为0~9十个数字,且逢十进一。例如:
常用的数制还有二进制、八进制和十六进制等。
基数小于 10 的计数制,可用十进制相应的数码作为它的数字符号,一个数一般由多个数码组成。数码在数中的位置不同,其值也不同。
以 2 为基数的数制称为二进位计数制,它只包括 0 和 1 两个数码,很容易用电子元件的两种不同的状态来表示,如用高电平表示 1,用低电平表示 0。所以,计算机中通常采用二进制数。
二进制数的计数特征:逢二进一,运算简单。
在加、减、乘、除四则运算中,二进制乘法实质上是做移位加法,除法则是移位减法。同样,对任意一个二进制数X都可以表示为:
式中,第i位的数是0或1,对应的数值为 x i ×2 i ,并称2 i 为第i位的权。
例如,二进制数 1101.11,则可表示为:
为了书写和阅读方便,经常采用八进制数、十六进制数作为二进制数的缩写形式。在计数时,八进制数采用逢八进一,十六进制数采用逢十六进一。
为了避免使用多种进位制产生混乱,在书写计算机程序时,一般不用基数作为下标来区分各种进制,而是用相应的英文字母作后缀来表示各种进制的数。例如:
B(Binary)表示二进制数。
D(Decimal)表示十进制数,一般可省略D,即无后缀的数字为十进制数。
H(Hexadecimal)表示十六进制数。
2.不同进制数之间的转换
尽管有不同的进制,但在计算机中的数仍然只能用二进制数表示,十六进制数适应于读者方便读数的需要,而十进制数则是日常生活所必需的。因此,需要掌握各种进制间的转换关系。十进制数、二进制数、八进制数和十六进制数的对照如表 1-1 所示。
表 1-1 4 种进制数码对照表
(1)二进制数转换为十进制数
基本方法:将二进制数按权展开式,利用十进制数的运算法则求和,即可得到等值的十进制数。
(2)十进制数转换为二进制数
任意十进制数N转换成二进制数,需将整数部分和小数部分分开,采用不同方法分别进行转换,然后用小数点将这两部分连接起来。
①整数部分:除基取余法。
分别用二进制基数 2 不断地去除十进制数N的整数,直到商为 0 为止,每次所得的余数依次排列即为相应进制的数码。最初得到的为最低有效数字,最后得到的为最高有效数字。
②小数部分:乘基取整法。
分别用基数2不断地去乘十进制数N的纯小数部分,直到积的小数部分为 0(或直到所要求的位数)为止,每次乘得的整数依次排列即为相应进制的数码。最初得到的为最高有效数字,最后得到的为最低有效数字。
(3)二进制数、十六进制数之间的相互转换
将二进制数转换为十六进制数,从低位开始,每 4 位一组,然后将其转换为对应的十六进制数。如最后一组不足4位,需在左边补0。
用同样方法可将二进制小数转换十六进制小数,只是分组应从小数点右边开始分成 4位一组。如最后一组不足 4 位,需在右边补 0。
十六进制数转换为二进制数,将每位十六进制数直接转换成相应的4位二进制数。
【 例1-1 】将数(10.101) 2 ,(46.12) 8 ,(2D.A4) 16 转换为十进制数。
解: (10.101) 2 =1×2 1 +0×2 0 +1×2 -1 +0×2 -2 +1×2 -3 =2.625
(46.12) 8 =4×8 1 +6×8 0 +1×8 -1 +2×8 -2 =38.15625
(2D.A4) 16 =2×16 1 +13×16 0 +10×16 -1 +4×16 -2 =45.64062
【 例1-2 】将(168.645) 10 转换成二进制、八进制和十六进制数。
解: (168.645) 10 =(10101000.10100) 2 =(250.51217) 8 =(A8.A51EB) 16
具体转换过程为:
【 例1-3 】将(110101.011) 2 转换为十六进制数。
解: (110101.011) 2 =(35.6) 16
【 例1-4 】将(4A5B.6C) 16 转换为二进制数。
解: A5B.6C) 16 =(100101001011011.011011) 2
注意 :十进制数与十六进制数之间的转换,一般也可以通过二进制数过渡进行。
前面所述的二进制数,并未提及符号问题,实际上是一种无符号数的表示。但在计算机中,实际的数值是带有符号的,既可能是正数,也可能是负数,前者符号用“+”号表示,后者符号用“-”号表示,运算的结果可能是正数,也可能是负数。于是在计算机中就存在着如何表示正、负数的问题。
1.带符号数的表示方法
通常规定一个有符号数的最高位为符号位,即数的符号在机器中也数码化了。把一个数放在计算机中的表示形式叫机器数,而这个数本身就称为这个机器数的真值。一个有符号数,由于编码不同,可以有几种机器数;反之,一个机器数,由于解释方法不同,又可代表几种真值。数的表示方法见表1-2。广义地说,在计算机内(存在内存或寄存器中)的数就是机器数,它可以代表无符号数,也可以代表有符号数,有时还可代表字符,至于它究竟代表什么是由编程者确定的。
表 1-2 数的表示方法
由于计算机只能识别 0 和 1,因此,在计算机中通常把一个二进制数的最高位作为符号位,以表示数值的正与负(若用 8 位表示一个数,则D7 位为符号位;若用 16 位表示一个数,则D15位为符号位),并用0表示“+”;用1表示“-”。
具体而言,带符号的二进制数,在计算机中有三种表示方式,即为原码、反码和补码。它们的共同特点都是通过符号位来表示数的正负,但是数的大小的表示方法是不同的。
(1)原码
如上所述,正数的符号位用 0 表示,负数的符号位用 1 表示,符号位之后表示数值的大小,这种表示方法称为原码。例如:
(2)反码
正数的反码与原码相同。最高位一定是0,代表符号。其余位为数值位。
负数的反码其符号位为1,与原码相同,数值位则将其负数的原码的数值位按位取反。例如:
(3)补码
正数的补码表示与原码相同,即最高位为符号位,用“0”表示正,其余位为数值位。而负数的补码为其反码加 1 形成。例如:
2.数的小数点表示方法
(1)定点表示法:表示小数点的位置是固定不变的。分为纯整数和纯小数两类,其格式如下所示。
纯整数表示方法:
[数符][尾数.]
纯小数表示方法:
[数符][.尾数]
(2)浮点表示法:表示小数点的位置是不固定的。任意二进制数N一般可表示为:N=2 P ×S,一个浮点数分为阶码和尾数两部分,二者各有表示正负的阶符和数符,常用存储格式:
[阶符][阶码][数符][尾数]
在微型计算机中常用的浮点数表示有:
①四字节浮点数格式,它由一个字节指数(EXP)、三个字节尾数构成,共用4个存储单元。如图 1-1 所示。
图 1-1 四字节浮点数格式
②三字节浮点数格式,它由一个字节指数(EXP)、二个字节尾数构成,共用三个存储单元。如图 1-2 所示。
图 1-2 三字节浮点数格式
3.8 位与 16 位二进制数表示的范围
(1)8 位二进制数的范围
①无符号数,0~255(或用 00~FFH表示)。
②有符号数。
(2)16 位二进制数的范围
①无符号数,0~65535(或用0000~FFFFH表示)。
②有符号数(只写出补码)。
编码是用二进制数表示数字、字母、符号和汉字的方法。常用的编码方案有以下两种。
· ASCⅡ码 :是美国标准信息交换码,已被国际标准化组织定为国际标准。国际上通用的 7位码本(即用7位二进制数表示一个字符),共有 128个字符。计算机中用一个字节存放一个ASCII码,最高位置0,或用作奇偶校验。
· 汉字国标码 :是我国“信息交换用汉字编码字符集——基本集”,标准号GB2312-80,主要用于汉字信息交换。国标码中共有7445个符号、数字、字母和汉字。
汉字分为两级:一级汉字(常用汉字)3755个,按汉语拼音字母顺序排列;二级汉字(非常用汉字)3008个,按偏旁部首排列,部首顺序依笔画多少为序。用16位二进制数对一个汉字进行编码,每字节最高位为“0”,计算机中用两个字节存放一个汉字。
汉字外码与内码:
➢外码:指汉字输入码,用英文键盘进行汉字输入而采用的汉字编码方案,主要有音码、形码、音形结合码三大类。
➢内码:指在计算机内部进行汉字存储与处理使用的代码,将汉字国标码每个字节的最高位置加 1,即为机内码。
1.二—十进制编码(BCD码)
二—十进制编码是一种用二进制编码的十进制数,称为BCD码。BCD码用标准的8421的纯二进制码的16个状态中的10个(如表1-3所示)。
用BCD码表示十进制数,只要将每位十进制数用适当的 4 位二进制码代替即可。
表 1-3 BCD编码
例如,69.25 的BCD码,根据上表可直接写出相应的BCD码,
69.25 =(01101001.00100101) BC D 。
2.字母和符号的编码
在计算机的应用过程中,如操作系统命令,各种程序设计语言以及计算机运算和处理信息的输入输出,经常用到某些字母、数字或各种符号,如:英文字母的大、小写,0~9数字符,“+”、“-”、“*”、“/”运算符,“<”、“>”、“=”等关系运算符。但在计算机内,任何信息都是用代码表示的,因此,这些符号也必须要有自己的编码。
ASCII码(美国信息标准代码)是一种国际通用文字符号代码。微型计算机普遍采用的是ASCII码(参见附录A)。ASCII码是一种 8 位代码,最高位一般用于奇偶校验,其余 7 位二进制码用于对 128 个字符进行编码。ASCII码包括 10 个十进制数 0~9;大写和小写英文字母各 26 个;32 个通用控制符号;34 个专用符号,共 128 个字符。其中数字 0~9的ASCII码分别为 30H~39H,英文大写字母A~Z的ASCII码从 41H开始依次编至 5AH。ASCII码从 20H~7EH均为可打印字符,00H~1FH为通用控制符,它们不能被打印,只起控制或标志的作用,如 0DH表示回车(CR),0AH表示换行控制(LF),04H(EOT)为传送结束标志。
3.计算机中存储与处理数据的单位
(1)位(bit):指二进制的一位数,它是计算机中存储和处理数据的最小单位。
(2)字节(Byte):八个二进制位为一个字节,它是存储容量的基本单位。
8bit=1B(字节)1024B=1KB(千字节)=2 10 B
1024KB=1MB(兆字节)1024MB=1GB