1.1 计算机中的数制及数制的转换
十进制是人们生活中普遍使用的计数制,但计算机都是以二进制形式进行算术运算和逻辑运算操作的,微型计算机也不例外。因此,对于用户在键盘上输入的十进制数字和符号命令,微型计算机必须先把它们转换成二进制形式进行识别、运算和处理,然后再把二进制形式的运算结果转换为人们容易识别的十进制数字和符号,并在显示器上显示出来。
上述过程都是由计算机自动完成的,在微型计算机中除了用到二进制和十进制的数制外,经常会用到八进制和十六进制的计数制,为了使读者弄清计算机中数制转换的原理,先对计算机中常用的数制和数制的转换进行讨论。
1.1.1 计算机中的数制
所谓数制是指数的制式,是人们利用符号计数的一种科学方法。数制有很多种,微型计算机中常用的数制有十进制、二进制、八进制和十六进制等。
1.十进制(Decimal)
十进制是人们生活中普遍使用的数制,它用0、1、2、…、9这十个数来描述。十进制数的主要特点如下:
①它有0~9十个不同的数,这是构成所有十进制数的基本符号。
②它是逢10进位的。十进制数在计数过程中,当它的某位计满10时就要向它邻近的高位进1。
2.二进制(Binary)
二进制是在计算机系统中使用的数制,它用0、1这两个数来描述。二进制数的主要特点如下:
①任何二进制数都是由0、1这两个数组成。
②二进制数的基数为2,它遵循逢2进1的进位计数原则。
3.十六进制(Hexadecimal)
十六进制是计算机指令代码和数据以及软件工具中经常使用的数制,它用0、1、…、9和A、B、…、F这十六个数和字母来描述。十六进制数的主要特点如下:
①任何一个十六进制数都是由0、1、…、9和A、B、…、F这十六个数和字母构成。
②十六进制数的基数为16,它遵循逢16进1的进位计数原则。
为方便起见,现将部分十进制、二进制和十六进制数的对照表列于表1-1。
表1-1 部分十进制、二进制和十六进制数的对照表
1.1.2 数制间的转换
在计算机中都是以二进制数进行算术运算和逻辑运算操作的,而人们习惯使用十进制数,计算机会自动对不同数制的数进行转换。下面学习不同数制的数是如何转换的。
1.二进制数和十进制数间的转换
(1)二进制数转换成十进制数
二进制数转换成十进制数只要把欲转换数按权展开后相加即可。例如:
11010.01B=1×24+1×23+1×21+1×2-2=26.25
(2)十进制数转换成二进制数
本转换过程是上述转换过程的逆过程,但十进制整数和小数转换成二进制整数和小数的方法是不相同的,现分别进行介绍。
1)十进制整数转换成二进制整数
常用的是“除2取余法”。用2连续去除要转换的十进制数,直到商小于2为止,然后把各次余数按最后得到的为最高位、最早得到的为最低位,依次排列起来所得到的数便是所求的二进制数。
【例1-1】 100= B 余数
答案:100D=1100100B
2)十进制小数转换成二进制小数
通常采用“乘2取整法”。用2连续去乘要转换的十进制小数,直到所得积的小数部分为0或满足所需精度为止,然后把各次整数按最先得到的为最高位、最后得到的为最低位,依次排列起来所对应的数便是所求的二进制小数,现结合实例加以介绍。
【例1-2】 0.625D= B
乘2取整 整数部分
答案:0.625D=0.101B
2.二进制数与十六进制数的转换
1)二进制数转换为十六进制数
采用四位二进制数合成为一位十六进制数的方法,以小数点为界分成左侧整数部分和右侧小数部分;整数部分从小数点开始,向左每4位二进制数一组,不足4位在数的前面补0;小数部分从小数点开始,向右每4位二进制数一组,不足4位在数的后面补0,然后每组用十六进制数码表示,并按序相连即可。
【例1-3】 把111010.011110B转换为十六进制数。
00111010.01111000=3A.78H
3A7 8
2)十六进制数转换为二进制数
将十六进制数的每位分别用4位二进制数码表示,然后它们按序连在一起即为对应的二进制数。
【例1-4】 把2BD4H和20.5H转换为二进制数
2BD4H=0010101111010100B
20.5H=00100000.0101B
3.十六进制数与十进制数的转换
(1)十六进制数转换成十进制数
十六进制数转换成十进制数的方法和二进制数转换成十进制数的方法类似,将十六进制数按权展开后求和即得到十进制数。
【例1-5】 将十六进制数3DF2H转换成十进制数。
3DF2H=3×163+13×162+15×161+2×160=15858
(2)十进制数转换成十六进制数
①十进制整数转换成十六进制整数与十进制整数转换成二进制整数类似,十进制整数转换成十六进制整数可以采用“除16取余法”。用16连续去除要转换的十进制整数,直到商数小于16为止,然后把各次余数按逆得到顺序排列起来所得的数,便是所求的十六进制数。
②十进制小数转换成十六进制小数的方法类似十进制小数转换成二进制小数,常采用“乘16取整法”。把欲转换的十进制小数连续乘以16,直到所得乘积的小数部分为0或达到所需精度为止,然后把各次整数按相同的得到顺序排列起来所得的数,便是所求的十六进制小数。