【摘 要】大家都知道:二进制是计算机内部数据处理和数字电路的基础.进制掌握得是否清楚,对后续很多相关课程的学习影响重大.本文通过进制转换的计算来阐述学习进制以及学好进制的基本关键点,并详细讲解进制快速转换技巧,以帮助理解进制概念和应用,提高对进制的真正认识.
【关 键 词】进制转换;2的N次方;4位二进制数
在讲如何学好进制之前,我们先来看以下三个二进制数,算一算它们所对应的十进制数是多少.
①1011②1111111011③10111011
如果你能花1分钟做出来,说明你已经学会进制转换了,请跳过本文的第一部分,直接阅读第二部分;如果你能在1分钟以内完成(本人大概需要花十秒左右可以解出答案),那说明你已经是一个进制转换的高手了,可快速浏览本文,当然不看也没有问题;如果你花了几分钟才计算出来,或者说无法确定答案是否正确的话,那你就得加油了,请认真仔细地并反复地阅读本文,相信会有大收获.
一、进制基础
大家都知道:二进制是计算机内部数据处理和数字电路的基础.进制掌握得是否清楚,对后续很多相关课程的学习影响重大.很多人在学习进制的时候觉得犹如在“看天书”,或者是似懂非懂,一知半解,究其原因是平时用惯了十进制,看见“10”就是“十”.而当你学过进制后,“10”有可能是“二”,也有可能是“八”;或者是“十六”,结果取决于采用的是几进制数.
学好进制,首先要学好二进制,学好二进制的基础有两点:
1.熟练掌握二进制数运算中最复杂的计算,即1+1等于(10)2(逢二进一,类似于十进制中的9+1);再推出(11)2+1等于(100)2等
2.熟记2的N次方的数(即二进制的权,权的大小与数字符号所在位置有关);20等于1,21等于2,22等于4,23等于8,24等于16,25等于32,26等于64,27等于128,28等于256,29等于512.
一般记到2的10次方,2的11次方可以用2K来表示,即1K等于1024等于210,220等于1M等于1024K,230等于1G等于1024M,240等于1T等于1024G,264等于24·220·
240等于16MT.
运用以上两点,从0开始依次加1,可推出四位二进制数,并计算其所对应的十进制数.
接下来,我们来看看4位二进制部与其它进制的对应关系表(见表1).
·任何进制数转换成十进制数都可以用按权展开求和的方法.
8、4、2、1都是二进制的权,8421法其实就是四位数的按权展开求和法.(注意不要与8421码概念混淆,8421码是一种BCD编码,用四位二进制编码来表示十进制的十个值.
例:79等于(0111,1001)8421BCD码)
(10111011)2
等于27+25+24+23+21+20
等于128+32+16+8+2+1等于160+16+11等于187
·十进制转换成其它进制数,都可以用除以基数,倒过来取余数的方法.
基数即为该进制能采用的基本符号,而余数肯定都是小于基数的.
例如:二进制的基数为2,只有“0”和“1”两个基本符号.十进制数除以二,得到的余数也只会是“0”或者“1”.而十六进制较复杂,用“A”表示10,依次类推,逢十六进位.
·2位二进制数最大为“11”,八进制数为“77”;十进制数为“99”;而十六进制数则为“FF”.
·十六进制数、八进制数可直接转换成二进制数.
16是2的4次方;8是2的3次方.因此,八进制数和十六进制数与二进制数的关系紧密(通俗地讲可以看成是亲戚关系——看到二进制,马上就知道八进制和十六进制数长什么样).
例如:(56)8等于(101,110)2
等于(2E)16
只要充分理解和熟记牢记表1,那你离成为进制高手就不远了.
二、进制提高
现在让我们来看看如何在很短的时间内计算出这三个二进制数所对应的十进制数.
①1011
当然直接从基本的四位二进制数与十进制数的对应表中取出答案:为“十一”.(牢记在脑中,最差也要知道“8+2+1”)
②1111111011
可看成1111111111减去100所得.10位二进制“1”等于2的10次方减1,即1024-1等于1023.而二进制“100”为十进制的“四”.故最后答案为1023-4等于1019.
另外的一个算法可以先算出前7个“1”的十进制数等于2的7次方减1,即128-1等于127,然后乘以二进制数“1000”,即十进制数“8”;最后加上3,得到最后结果为:127*8+3等于125*8+2*8+3等于1000+19等于1019.对应的二进制数算式为:1111111*1000+11等于1111111000+11等于1111111011.
③10111011
先把该数看成十六进制为:BBH,再转换成十进制数(十六进制“B”等于十进制数“11”),即为11*16+11等于176+11等于187.
·从以上三道小题计算过程来看,首先,再次验证了进制的基础
(1)要牢牢记住四位二进制数对应的十进制数和十六进制数;
(2)要牢牢记住2的0次方到2的10次方所对应的十进制数.
·然后我们再来看一些特殊二进制数的计算,见表2
(1)“1”后面有N个零的二进制数等于2的N次方(这和十进制“100”即10的平方的道理是一样的);
例:2、4、8、16、32所对应的二进制数.
(2)N个全“1”的二进制数等于2N-1(这和十进制数“99”等于“100-1”的道理是一样的).
例:127等于27-1等于(1111111)2
·接着,我们来看二进制的乘法可以用移位添0来代替
因为二进制乘法很简单,没有乘法口诀表需要去背,要么乘“0”,得全“0”;要么乘“1”,得其本身.
二进制数向左移位,末位添0,即乘2(二进制数“10”).若添2个0,即乘4(二进制数“100”);添3个0,即乘8(二进制数“1000”);依次类推,添N个0,即乘2的N次方.
例:(101000)2等于(101*1000)2等于5*8等于40;(1111100)2等于(11111*100)2等于31*4等于124.
·最后,我们对以上所述进行一下总结和综合:
1.二进制数中“1”的个数不多,仍可用按权展开求和法.
例:(1010100)2等于26+24+22等于64+16+4等于84(等于5*16+4等于10*8+4)
2.二进制数中“1”的个数较多,可运用计算全“1”的方法再通过加减获得.
例:(11110111)2等于(11111111-1000)2等于255-8等于247
或:等于(1111*10000+111)2等于15*16+7等于256-16+7等于247
3.一定要活用移位(即乘除法),并牢记四位二进制数对应的十六(八)进制数值.见例1、2下划线对应加粗部分的运算过程.
例:(2FC)16等于(1011111100)2等于29+28-1-3等于512+256-4等于764
4.八进制介于二进制与十六进制之间,因此可以用于过渡计算.如:将较大的十进制数转换成二进制数时,可以先计算成八进制数(除8比除16简单),再通过1位对3位来快速获得二进制数(当然以熟悉表1为前提).
例:115等于(163)8等于(1,110,011)2
115等于14*8+3等于(1*8+6)*8+3(递推式,在编程时会用到)
5.如果熟悉了进制,那么很多进制转换都可以很快计算出来.
例:(1)将十进制数“252”转换成八进制数(不需要用除8取余法)
252等于255-3等于(11111111-11)2等于(11111100)2等于(374)8
(2)将十进制数“240”转换成八进制数(不需要用除8取余法)
320等于5*8*8等于(101*10*10)8等于(10100)8
以上这些运算,都必须在熟悉常用进制的权,以及4位二进制数对应八、十六进制数的前提下,才能迅速准确地完成.
只有真正理解了二进制(包括运算和特性),其它进制就能迎刃而解了.
计算有很多技巧.如果让你计算“99×99等于?”,有经验的你一定会这么算:(100-1)×99等于9900-99等于9801(其实还有其它技巧可以很快心算出来,在电视节目中有过介绍).同理,若要将10位以内的二进制数转换成十进制数,可运用以上方法很快心算出来,但若二进制数超过10位以上,除非“1”的个数不多,否则还是要花一定的时间进行计算,甚至要动用计算工具.当然或许有人不用就能办到,这就是“世界之大,无奇不有啊”.
谨以此文献给那些学习进制比较困难的朋友,希望能对大家学习进制有所帮助和提高.通过对此文的阅读理解,利用闲暇时间的反复训练和再学习,我相信每个人都可以牢牢地“Hold”住它,成为真正的“进制控”.
注:文中除有文字描述的或有下标标注的数字外(也有用符号表示的,十六进制——H;十进制——D;八进制——Q;二进制——B,由于容易和十六进制的基本符号产生混淆,故本文中未采用),其它出现的阿拉伯数字都为十进制数.
再做几道进制转换的题目,看看有没有进步:
①101011101;②1110011转换成十进制数
(101011101)B等于(1010*100000+111*100+1)B等于10*32+7*4+1等于349(最多5秒)
(1110011)B等于(1111111-1100)B等于127-12等于115(最多3秒)
③1036;④240转换成二进制数
1036等于1024+12等于
(10000000000+1100)B等于
(10000001100)B(最多2秒)
240等于8*30等于
8*(32-2)等于
(1000*(100000-10))B等于
(1000*11110)B(11110000)B(最多5秒)
等于4*60等于4*4*15等于(1111*10000)B(最多3秒)