购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.1 计算机使用的数制及转换

1.数制 数制就是计数方式。

日常生活中常用的是十进制计数方式,而计算机内部使用的是二进制数据。因此,计算机在处理数据时,必须进行数制之间的相互转换。

(1)二进制数

二进制数只有两个数字符号:0和1,计数时按“逢二进一”的原则进行计数,也称其基数为二。

一般情况下,二进制数可表示为:(110)2、(110.11)2、10110B等。

在任何进制数制中,每个数所处位置不同,实际代表的数值也不相同,把不同位置所表示的数值称为权值,二进制也如同十进制一样可以写成一种展开的形式。

所谓按位权展开法,就是将任一r进制数的各位的权值乘以该位的数值,然后求和。

例如,十进制数123=1×102+2×101+3×100。

任一个r进制数都可以表示成:

上式中,r称为基数(二进制数为2),di表明第i位上可取的数字(如二进制数取0或1);i为0~m时,从低到高依次表示整数位,i为-1~-n时,则依次表示小数位;ri(即r的i次方)称为第i位的权值。

把一个r进制数N按权展开,则N可表示为r进制数的每位数字di乘以其权ri所得积之和。

根据位权表示法,每一位二进制数在其不同位置表示不同的值。例如:

对于8位二进制整数(由低位~高位分别用D0~D7表示)及小数部分(十分位~万分位分别用D-1~D-4表示),则各位所对应的权值如下。

对于任何二进制数,可按位权求和展开为与之相应的十进制数,例如

(10)2=1×21+0×20=(2)10

(10.1)2=1×21+0×20+1×2-1=(2.5)10

(11)2=1×21+1×20=(3)10

(110)2=1×22+1×21+0×20=(6)10

(111)2=1×22+1×21+1×20=(7)10

(1111)2=1×23+1×22+1×21+1×20=(15)10

(10110)2=1×24+0×23+1×22+1×21+0×20=(22)10

对于8位二进制整数,其最大值为:

(11111111)2=1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20=(255)10=28-1

对于16位二进制整数,其最大值为:

(1111111111111111)2=65535=216-1

对于n位二进制整数,其最大数值为:2n-1。

例如,二进制数10110111,按位权展开求和计算可得:

(10110111)2=1×27+0×26+1×25+1×24+0×23+1×22+1×21+1×20

=128+0+32+16+0+4+2+1

=(183)10

例如,二进制数10110.101,按位权展开求和计算可得:

(10110.101)2=1×24+1×22+1×21+1×2-1+0×2-2+1×2-3

=16+4+2+0.5+0.125

=(22.625)10

必须指出:在计算机中,一个二进制数(如8位、16位或32位)既可以表示数值,也可以表示一种符号的代码,还可以表示某种操作(即指令),计算机在程序运行时按程序的规则自动识别,这就是所谓的一切信息都是以二进制数据进行存储的。

(2)十六进制数

计算机在信息输入/输出或书写相应程序或数据时,可采用简短的十六进制数表示相应的位数较长的二进制数。

十六进制数有16个数字符号,其中0~9与十进制相同,剩余6个为A、B、C、D、E、F(或a、b、c、d、e、f),分别表示十进制数的10~15,见表1-1。

1-1 二进制、十进制、八进制、十六进制转换表

十六进制数的计数原则是“逢十六进一”,也称其基数为16,整数部分各位的权值由低位到高位分别为:160、161、162、163…。

例如:

为了便于区别不同进制的数据,一般情况下可在数据后跟一后缀:

二进制数用“B”表示(如00111010B);

十六进制数用“H”表示(如3A5H,);

十进制数用“D”表示(如39D或39);

八进制数用“Q”表示(如123Q)。

对于以A~F或a~f开始的十六进制数,则在该数据前加0。

例如:0AF36H=0AH×163+0FH×162+3×161+6×160

=10×163+15×162+3×161+6×160

(3)八进制数

八进制数使用0、1、2、3、4、5、6、7共8个数字符号,八进制数的计数原则是“逢八进一”,也称其基数为8,整数部分各位的权值由低位到高位分别为:80、81、82、83…。

例如:(127)8=127Q=1×82+2×81+7×80

2.不同数制之间的转换 计算机中的数只能用二进制表示,十六进制数读写方便,而日常生活中使用的是十进制数。因此,计算机必须根据需要对各种进制数据进行转换。

(1)二进制数与十进制数相互转换

对任意二进制数均可按权值展开将其转化为十进制数。例如:

十进制数转换为二进制数,可将整数部分和小数部分分别进行转换,然后合并。其中整数部分可采用“除2取余法”进行转换,小数部分可采用“乘2取整法”进行转换。

1)除2取余法。

例如:采用“除2取余法”将37D转换为二进制数。

把所得余数由高到低排列起来可得:37=100101B

2)乘2取整法。

例如:采用“乘2取整法”将0.625转换为二进制数小数

直至小数部分为0(若不为0,则根据误差要求取小数位)。

把所得整数由高到低排列起来可得:0.625=0.101B。

同理,把37.625转换为二进制数,只需将以上转换合并起来可得:37.625=100101.101B。

【例 1-1 】把十进制数57.63转换成二进制数。

可将十进制数57.63的整数部分和小数部分分别转换。十进制整数转换成二进制数,整数部分可以采取除2取余法。小数转换成二进制数可以采取乘2取整法。

求整数部分:

求小数部分

则 57.63D=111001.1010B

十进制数转换为二进制数,也可以采用权值比较法。

所谓权值比较法,即将十进制数与二进制位权从高位到低位逐位比较,若该位十进制数权值大于或等于二进制某位权值,则该位取“1”,否则该位取“0”,采用按位分割法进行转换。

例如:将37.625转换为二进制数。

将整数部分37与二进制各位权值从高位到低位比较,37>32,则该位取1,剩余37-32=5,逐位比较,得00100101B。

将小数部分0.625按同样方法转换,得0.101B。

结果为:37.625D=100101.101B。

(2)二进制数与十六进制数的相互转换

在计算机进行输入、输出显示时,常采用十六进制数。十六进制数可看作是二进制数的简化表示。

因为24=16,所以1位十六进制数可表示4位二进制数,其二进制、十进制、八进制、十六进制对应数的转换关系见表1-1。

在将二进制数转换为十六进制数时,其整数部分可由小数点开始向左每4位为一组进行分组,直至高位,若高位不足4位,则左侧补0使其成为4位二进制数,然后按表1-1中的对应关系进行转换。其小数部分由小数点向右每4位为一组进行分组,不足4位则末位补0,使其成为4位二进制数,然后按表1-1的对应关系进行转换。

例如:

需要将十六进制数转换为二进制数时,则为上述方法的逆过程

例如:0C5.A7H=11000101.10100111 B

例如:

即7ABFH=111101010111111B

3)二进制数与八进制数的相互转换

因为23=8,所以1位八进制数可表示3位二进制数,转换关系见表1-1。

在将二进制数转换为八进制数时,其整数部分可由小数点开始向左每3位为一组进行分组,直至高位。若高位不足3位,则补0,使其成为3位二进制数,然后按表1-1的对应关系进行转换。其小数部分由小数点向右每3位为一组进行分组,不足3位则末位补0,使其成为3位二进制数,然后按表1-1的对应关系进行转换。

例如:123Q=001010011B

1011111B=001011111B=137Q

(4)十进制数与十六进制数的相互转换

十进制数与十六进制数的相互转换可直接进行,也可先转换为二进制数,然后再把二进制数转换为十六进制数或十进制数。

例如:将十进制数37D转为十六进制数。

37D=100101B==00100101B=25H

例如:将十六进制数41H转换为十进制数。

41H=01000001B=65D

也可按位权展开求和方式将十六进制数直接转换为十进制数,这里不再详述。 Q5ziDzEjwFJetXawTI9nl3hiToyIZvpLbyK7HEkNWorp6LhkVkbFxctUHdhNHLWa

点击中间区域
呼出菜单
上一章
目录
下一章
×