数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。编码是采用少量的基本符号,选用一定的组合原则,以表示大量复杂多样的信息的技术。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理、存储和传输。
二进制数的表示
我们习惯使用的十进制数是由0、1、2、3、4、5、6、7、8、9十个不同的符号组成,每一个符号处于十进制数中不同的位置时,它所代表的实际数值是不一样的。例如1999年可表示成
1×1000+9×100+9×10+9×1
=1×103+9×102+9×101+9×100
式中每个数字符号的位置不同,它所代表的数值也不同,这就是经常所说的个位、十位、百位、千位……的意思。二进制数和十进制数一样,也是一种进位计数制,但它的基数是2。数中0和1的位置不同,它所代表的数值也不同。例如二进制数1101表示十进制数13。
(1101)2 _ 1×23+1×22+0×21+1×20
_8+4+0+1_13
一个二进制数具有下列两个基本特点:
·两个不同的数字符号,即0和1
·逢二进一
一般我们用( )角标表示不同进制的数。例如:十进制用( )10表示,二进制数用( )2表示。
在微机中,一般在数字的后面,用特定字母表示该数的进制。例如:
B—二进制 D-十进制(D可省略) O-八进制 H-十六进制
在进位计数制中有数位,基数和位权三个要素。数位是指数码在一个数中所处的位置;基数是指在某种进位计数制中,每个数位上所能使用的数码的个数。例如:二进制数基数是2,每个数位上所能使用的数码为0和1二个数码。在数制中有一个规则,如是N进制数必须是逢N进1。对于多位数,处在某一位上的“1”所表示的数值的大小,称为该位的位权。例如,二进制第2位的位权为2,第3位的位权为4。一般情况下,对于N进制数,整数部分第i位的位权为Ni-1,而小数部分第j位的位权为N-j。
下面主要介绍与计算机有关的常用的几种进位计数制。
1. 十进制(十进位计数制)
具有十个不同的数码符号0、1、2、3、4、5、6、7、8、9,其基数为10;十进制数的特点是逢十进一。例如:
(1011)10 _1×103+0×102+1×101+1×100
2. 八进制(八进位计数制)
具有八个不同的数码符号0、1、2、3、4、5、6、7,其基数为8;八进制数的特点是逢八进一。例如:
(1011)8 _1×83+0×82+1×81+1×80
_ (521)10
3. 十六进制(十六进位计数制)
具有十六个不同的数码符号0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其基数为16,十六进制数的特点是逢十六进一。例如:
(1011)16 _ 1×163+0×162+1×161+1×160
_ (4113)10
表 1-1 四位二进制数与其它数制的对应表
二进制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
|
十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
八进制 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
|
十六进制 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
用计算机处理十进制数,必须先把它转化成二进制数才能被计算机所接受,同理,计算结果应将二进制数转换成人们习惯的十进制数。这就产生了不同进制数之间的转换问题。
1) 十进制数与二进制数之间的转换
⑴十进制整数转换成二进制整数
一个十进制整数转换为二进制整数的方法如下:
把被转换的十进制整数反复地除以2,直到商为0,所得的余数(从末位读起)就是这个数的二进制表示。简单地说就是“除2取余法”。
例如,将十进制整数(215)10转换成二进制整数
于是(215)10=(11010111)2
十进制整数转换成二进制整数的方法清楚以后,那么,十进制整数转换成八进制或十六进制就很容易了。十进制整数转换成八进制整数的方法是“除8取余法”,十进制整数转换成十六进制整数的方法是“除16取余法”。
(2)二进制数转换成十进制数
把二进制数转换为十进制数的方法是:将二进制数按权展开求和即可。
例如,将(10110011.101)2 转换成十进制数。
1×27 代表十进制数128
0×26 代表十进制数0
1×25 代表十进制数32
1×24 代表十进制数16
0×23 代表十进制数0
0×22 代表十进制数0
1×21 代表十进制数2
1×20 代表十进制数1
1×2-1 代表十进制数0.5
0×2-2 代表十进制数0
1×2-3 代表十进制数0.125
于是,(10110011.101)2=128+32+16+2+1+0.5+0.125=(179.625)10。同理,非十进制数转换成十进制数的方法是,把各个非十进制数按权展开求和即可。如把二进制数(或八进制数或十六进制数)写成2(或8或16)的各次幂之和的形式,然后再计算其结果。
2) 二进制数与八进制数之间的转换
二进制数与八进制数之间的转换十分简捷方便,他们之间的对应关系是:八进制数的每一位对应二进制数的三位。
(1) 二进制数转换成八进制数
由于二进制数和八进制数之间存在特殊关系,即81_23,因此转换方法比较容易,具体转换方法是:将二进制数从小数点开始,整数部分从右向左3位一组,小数部分从左向右3位一组,不足三位用0补足即可。
例如,将(10110101110.11011)2化为八进制数。
解:010 110 101 110 . 110 110
↓ ↓ ↓ ↓ ↓ ↓
2 6 5 6 . 6 6
于是 (10110101110.11011)2=(2656.66)8
(2) 八进制数转换成二进制数
方法:以小数点为界,向左或向右每一位八进制数用相应的三位二进制数取代,然后将其连在一起即可。
例如,将(6237.431)8转换为二进制数。
解: 6 2 3 7 . 4 3 1
↓ ↓ ↓ ↓ ↓ ↓ ↓
110 010 011 111 . 100 011 001
于是 (6237.431)8=(110010011111.100011001)2
3) 二进制数与十六进制数之间的转换
(1)二进制数转换成十六进制数
二进制数的每四位,刚好对应于十六进制数的一位(161_24),其转换方法是:将二进制数从小数点开始,整数部分从右向左4位一组,小数部分从左向右4位一组,不足四位用0补足,每组对应一位十六进制数即可得到十六进制数。
例1:将二进制数(101001010111.110110101) 2 转换为十六进制数。
解:1010 0101 0111 . 1101 1010 1000
↓ ↓ ↓ ↓ ↓ ↓
A 5 7 . D A 8
于是 (101001010111)2=(A57.DA1)16
例2:将二进制数(100101101011111)2 转换为十六进制数。
解:0100 1011 0101 1111
↓ ↓ ↓ ↓
4 B 5 F
于是 (100101101011111)2=(4B5F)16
(1) (2) 十六进制数转换成二进制数
方法:以小数点为界,向左或向右每一位十六进制数用相应的四位二进制数取代,然后将其连在一起即可。
例如,将(3AB.11)16转换成二进制数。
解:3 A B . 1 1
↓ ↓ ↓ ↓ ↓
0011 1010 1011 . 0001 0001
于是(3AB.11)16=(1110101011.00010001)2
计算机内表示的数,分成整数和实数两大类。在计算机内部,数据是以二进制的形式存储和运算的。数的正负用高位字节的最高位来表示,定义为符号位,用“0”表示正数,“1”表示负数。例如,二进制数+1101000在机器内的表示为:
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
↑
符号位
ASCII码
计算机中,对非数值的文字和其他符号进行处理时,要对文字和符号进行数字化处理,即用二进制编码来表示文字和符号。字符编码(Character Code)是用二进制编码来表示字母、数字以及专门符号。
在计算机系统中,有两种重要的字符编码方式:ASCII和EBCDIC。EBCDIC主要用于IBM的大型主机,ASCII用于微型机与小型机。下面我们简要介绍ASCII码。
目前计算机中普遍采用的是ASCII(AmericanStandard Code for Information Interchange)码,即美国信息交换标准代码。ASCII码有7位版本和8位版本两种,国际上通用的是7位版本,7位版本的ASCII码有128个元素,只需用7个二进制位(27=128)表示,其中控制字符32个,阿拉伯数字10个,大小写英文字母52个,各种标点符号和运算符号34个。在计算机中实际用8位表示一个字符,最高位为“0”。书后附录一列出了全部128个符号的ASCII码。例如,数字0的ASCII码为48,大写英文字母A的ASCII码为65,空格的ASCII码为32等等。有的计算机教材中的ASCII码用16进制数表示,这样,数字0的ASCII码为30H,字母A的ASCII为41H,…。
EBCDIC (扩展的二-十进制交换码)是西文字符的另一种编码,采用8位二进制表示,共有256种不同的编码,可表示256个字符,在某些计算机中也常使用。