在计算机的应用中,比较常用的三种进制系统是二进制、十进制以及十六进制。日常生活中通常使用十进制系统来表示数字。计算机系统通过二进制来处理数据。另一种与计算机使用相关的进制是十六进制系统,它提供一种更通俗易懂的方法表示一长串的二进制字符,便于人们理解。对于每种进制,符号的总个数称为基数,如十进制中用到的符号为0~9 共10 个,所以十进制的基数为10;十六进制中用到的符号为0~9 和A~F共16 个,所以十六进制的基数为16。对于每种进制都采用“逢基数进一”的进位计数制。
3 十进制与二进制系统十进制系统使用0~9,来表示所有的数字,是大部分人使用的进制系统。二进制系统被广泛运用在计算机中,用来表示数字和其他字符。这个系统仅使用两个符号,0 和1。
4. 十六进制系统计算机通常采用十六进制输出诊断信息、内存管理信息,区分网络适配器和其他硬件。十六进制是用于表示二进制的一种缩写方式。因为较大的二进制数,例如1101010001001110 可能被误读,十六进制数的表示将二进制数以四位为一组进行切分,每四位被转换成一个十六进制位。十六进制系统使用16 个不同的符号。因为只有10 个数字,所以十六进制使用字母A、B、C、D、E、F 来表示另外6 个符号。十六进制系统与ASCII 码和EBCDIC 码的字节有一种特殊的关系,这使得它便于快速表示地址和其他数据。每个十六进制数的字母对应4 位的二进制数,所以任意一个8 位的二进制数可以被表示成两个十六进制数的标记。比如说,字母N(用ASCII 码表示是01001110)的十六进制表示是4E(通过寻找十六进制字符4 和E 的二进制对应值)。表1-2 列出了十六进制数与十进制数、二进制数的关系。
5.进制转换
十进制数转换为二进制数或十六进制数将十进制转换到二进制数或者十六进制数,我们可以采用余数法,即十进制数被2(转换成二进制)或者16(转换成十六进制)除。这个过程的余数被记录下来,重复上述过程,将这一步的商用作下一步的被除数,直到商为0。这时,整个过程的所有余数(倒序排列)代表了对应的二进制数或者十六进制数。考虑十进制数79 转换为二进制数的过程如下所示。①用2 除该数;②重复上述过程直到商为0;③将所得余数倒序排列获取对应的二进制值1001111。
对十进制数79 转换为十六进制数的过程类似。①用16 除该数;②重复上述过程直到商为0;③将所得余数倒序排列获取对应的十六进制值4F。
小数的转换方式与整数稍有不同,例如十进制小数转换为二进制小数时,对小数部分是乘以2,此后取整,并将所得数的小数部分再乘以2,取整……如此循环直到小数部分是0 为止。将过程中得到的整数顺序排列,即是转换后的二进制小数。十进制小数0.8125 转换为二进制小数的过程,如表1-5 所示。①用2 乘该数,取整;②将所得数的小数部分乘2,取整;③重复上一步,直到小数部分为0;④将所得整数顺序排列,得到对应的二进制小数0.1101。
二进制数、十六进制数转换为十进制数非十进制数转换为十进制数可采用“位权法”,即把各非十进制数按权展开,然后求和,便可得到与之对应的十进制的等值数。二进制数1111101001.1 转换成十进制数的过程如下:(1111101001.1)2=1×29+1×28+1×27+1×26+1×25+0×24+1×23+0×22+0×21+1×20+1×2-1=(1001.5)10即二进制数1111101001.1 对应的十进制等值数是1001.5。十六进制数4F6A 转换成十进制数的过程如下:(4F6A)16=4×163+F×162+6×161+A×160=(20330)10即十六进制数4F6A 对应的十进制等值数是20330。十六进制数转换为二进制数、二进制数转换为十六进制数将十六进制数转换为二进制数时,需要将十六进制数每位上的数字转换为四位的二进制数。例如,将F6A9 转换为二进制数,我们将得到:F 6 A 91111 0110 1010 1001用二进制数表示即1111011010101001。将二进制数转换为十六进制数时,需要进行上述过程的反过程。如果数字的位数不能被4 整除,需要在头部增加多余的0 来使得可以被4 整除。比如,转换二进制数1101101010011 为十六进制数,我们将得到:0001 1011 0101 00111 B 5 3用十六进制数表示即1B53。注意:在转换前,在头部增加了3 个0,将1 变成了0001。6 计算机中数的表示计算机可以使用多种类型的编码来表示字符数据,例如ASCII 码、EBCDIC 码、Unicode 码和汉字编码。ASCII 码(American Standard Code for Information Intelchange,美国信息交换标准代码)使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII 码,使用7 位二进制数来表示所有的大写和小写字母、数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。扩ASCII 码是标准ASCII 码的扩充,使用8 位二进制数为256 个字符提供编码。EBCDIC 码(Extended Binary Coded Decimal Intelchange Code,扩展二- 十进制交换码)是国际商用机器公司(IBM)于1963 年至1964 年间推出的字符编码表,它通常只应用于老式的IBM大型计算机上。Unicode 码也称统一码、万国码、单一码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换处理的要求。Unicode 码用16 位二进制数为65000 个字符提供了编码。根据传输格式的不同,Unicode 码又可分为UTF-8、UT8-16、UTF-32 等。其中UTF-8 以字节为单位对Unicode 进行编码,UTF-16 以16 位无符号整数为单位对Unicode 进行编码,UTF-32 以32 位无符号整数为单位对Unicode 进行编码。汉字编码的字符集有GB2312(信息交换用汉字编码字符集)、GBK(汉字编码扩展规范)和 GB18030-2005(信息技术中文编码字符集)等。其中GB2312 共收入汉字6763 个和非汉字图形字符682 个。GBK 向下与GB2312 编码兼容,共收入了21003 个汉字和883 个其他符号。 GB18030-2005 共收录了70244 个汉字。