计算机中的数制及其相互转换

数制及其相互转换是计算机的基础知识,在中专和大学的计算机基础教程中都有相当的篇幅讲述,此内容在各类计算机考试中都占有一定分值。从我校历年使用的各版教材来看,这部分内容的讲述逻辑性不强,介绍的方法较为繁琐,学生学习这部分难点内容感到茫然。我在多年的教学实践中,对此部分内容作了认真的分析,在结构上作了调整,引入了简便方法,取得了较好的教学效果。

一、数制的引入

在日常生活中,人们主要使用十进制,但在某些时候也使用其它进制,如十二进制(如1年有12个月、1打物品有12件),六十进制(如1小时有60分钟、1分钟有60秒),24进制(如一天有24小时)等等。由此,我们引入数制的概念。数制就是多位数码中每一位的构成方法以及从低位向高位的进位规则。

任意进制(r进制)数展开式的普遍形式为:

 


式中Ai是第i位的系数,它可能是0(r-1)r个数码中的任意一个,r称为计数的基数,ri为第i位的权。进位规则为逢r进一。

二、常用的几种数制

我们在日常生活中主要使用十进制,而计算机中数据的表示只使用二进制,但二进制数码对人来说不便于读写。为了开发程序、阅读机器代码和数据的方便,我们经常使用八进制数和十六进制数来等价地表示二进制数,八进制和十六进制可以看着二进制的压缩形式。

二进制Binary       十进制Decimal

八进制Octal        十六进制Hexadecimal

数制

基数

进位规则

系数

二进制

2

21

0,1

八进制

8

81

0,1,2,3,4,5,6,7

十进制

10

101

0,1,2,3,4,5,6,7,8,9

十六进制

16

161

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

在写一个数字的时候,必须标明对应的数制,常在数字后面加上其对应数制的英文单词的第一个字母标识,也可以将数字用小括号括起来,在右下角用下标标明对应数制。如十六进制数7D.3B可写成7D.3BH(7D.3B)16 两种形式,由于十进制使用最为普遍,所以不加任何标识的数字默认为十进制数。

三、各种数制间的相互转换

1.将非十进制数转换成十进制数(二、八、十六→十)

   把各非十进制数按权展开求和即可。

(1)二→十转换

 101.11B=(101.11)2=1×22+0×21+1×20+1×2-1+1×2-2=(5.75)10

(2)八→十转换

 37.41O=(37.41)8=3×81+7×80+4×8-1+1×8-2=(31.515625)10

(3)十六→十转换

 2A.7FH=(2A.7F)16=2×161+A×160+7×16-1+F×16-2

=2×161+10×160+7×16-1+15×16-2 =(42.496094)10

2.将十进制数转换成非十进制数(十→二、八、十六)

我们用r进制代表二、八、十六进制,则转换方法就是:对于整数部分,“除r取余,自下而上”;对于小数部分,“乘r取整,自上而下”。

下面以十→二转换来说明,(68.3125)10=(      ?       )2

我们先转换整数部分,显然转换方法就是“除2取余,自下而上”。

           2  68                             余 数

       2  34 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄0   低位

        2   17 ┄┄┄┄┄┄┄┄┄┄┄┄┄0

         2   8 ┄┄┄┄┄┄┄┄┄┄┄┄┄1

           2   4 ┄┄┄┄┄┄┄┄┄┄┄┄0

             2  2  ┄┄┄┄┄┄┄┄┄┄┄0

              2   1  ┄┄┄┄┄┄┄┄┄┄0

                  0  ┄┄┄┄┄┄┄┄┄┄1    高位

 (68)10(1000100)2

小数部分的转换方法则是“乘2取整,自上而下”。

                                       整数

      0.3125 ×2 = 0 .625         0    高位

            0.625  ×2 = 1 .25          1

            0.25   ×2 = 0 .5           0

            0.5    ×2 = 1 .0           1    低位

 (0.3125)10 =(0.0101)2

    所以,(68.3125)10=(1000100.0101)2

同理,十→八转换的方法就是“整数部分:除8取余,小数部分:乘8取整”,十→十六转换的方法就是“整数部分:除16取余,小数部分:乘16取整”,这里就不再赘述。

3.非十进制数之间的相互转换(二n八、二n十六)

(1)二→八转换

1位八进制数可用3位二进制数来表示。因此二进制数转换成八进制数只要以小数点为界向左向右每3位二进制数用1位八进制数来代替即可,不足三位的用0补足。

: (1011010.1)2=(   ?   )8

(001 011 010.100)2

     (1   3   2 . 4)8

    即,(1011010.1)2=(132.4)8

    (2) 八→二转换

把一个八进制数转换成二进制数只要将1位拆分成3位即可。

: (572.3)8=(     ?     )2

5   7   2.  3)8

 

    (101 111 010 .011)2

    即,(572.3)8=(101111010.011)2

(3)二→十六转换

1位十六进制数可用位二进制数来表示。因此二进制数转换成十六进制数只要以小数点为界向左向右每位二进制数用1位十六进制数来代替即可,不足位的用补足。

: (1011010.1)2=(   ?   )16

(0101 1010.1000)2

 

 (5    A  . 8)16

即,(1011010.1)2=(5A.8)16

(4)十六→二转换

把一个十六进制数转换成二进制数只要将1位拆分成4位即可。

例:(F7.A)16(     ?     )2

F   7   .  A)16

 

(1111 0111 . 1010)2

即,(F7.A)16(11110111.101)2

四、二n十整数部分转换的简便方法

在教学实践中,根据二进制数的特点,我找到了一种二进制整数与十进制整数之间转换的简便方法,学习了前面的繁琐方法,再来使用这一简便方法,学生感到清新自然,乐于接受。

这个简便方法的前提是要求记住二进制整数部分各位的权值,对于二进制整数来说,从小数点左边第一位数起,其权值分别是20212223242526272829210,即12481632641282565121024,比较容易记住。

将一个二进制整数转换为十进制整数的时候,从右往左依次数二进制各位的权,如果系数为1就加上对应的权,如果系数为0则不加。如:

1010011B=(1010011)2=64+16+2+1=83

将一个十进制整数转换为二进制整数,先把该数写成二进制的权值相加的形式。如:117=64+32+16+4+1

顺着从右往左数二进制各位的权,如果有则补1,没有则补0,可得:

117=1110101B

我们用这一简单方法的局限性在于:它只适用于二进制数与十进制数整数部分的转换,而且数权的时候一定不能数漏。

    通过结构清晰的讲述,便于学生举一反三,再辅以大量的练习,并教会他们使用科学计算器来进行各种数制间的转换,检验自己的转换结果,增强他们的学习兴趣,学生就能在短时间内掌握计算机中的数制及其相互转换的方法和技巧,为后续课程打下坚实的基础。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值