李智远
摘要:进制之间转换,是大中专院校学生必须掌握的基本知识。在实际工作教学中,发现很多学生不能够很好的运用进制之间的转换口诀或算法,从而造成解题混乱甚至错误。下面我们通过对二、八、十、十六四种进制之间的一般转换方法和特殊转换算法进行详细的探讨。相信阅读此篇文章后可以帮助大家快速、轻松的进行各种进制之间的相互转换。
关键词:进制;口诀;421;8421
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)04-0109-02
以下四段为预备知识,务请事先熟练掌握:
D:Decimal,十进制,十进制的基本数符有10个:0、1、2、3、4、5、6、7、8、9;加法口诀:逢十进一;减法口诀:借一当十。
B:Binary,二进制,二进制的基本数符有2个:0、1;加法口诀:逢二进一;减法口诀:借一当二。
O:Octal,八进制,八进制的基本数符有8个:0、1、2、3、4、5、6、7;加法口诀:逢八进一;减法口诀:借一当八。[注:字母“O”和数字“0”容易混淆,故书写时一般使用字母Q表示八进制]
H:Hexadecimal,十六进制,十六进制的基本数符有16个:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;加法口诀:逢十六进一;减法口诀:借一当十六。
1 所有进制数向十进制数的转换(即R→D)[R:表示任意某种进制数]
其转换口诀是:位权相加法(即:拿各个数位上的数符乘上各个数位上对应的权,然后累加求和即可)。 比如:二进制实数101011.101B向十进制实数转换:
101011.101B=1×25+1×23+1×21+1×20+1×2-1+1×2-3=32+8+2+1+0.5+0.125=43.625D[提示:①二进制小数点右侧数位上的权从左往右依次是:2-1,2-2,2-3,…;②二进制小数点左侧数位上的权从右往左依次是:20,21,22,…。]
再比如:八进制实数173.2Q向十进制实数转换:
173.2Q=1×82+7×81+3×80+2×8-1=64+56+3+0.25=123.25D。
再比如:十六进制实数2BC.8H向十进制实数转换:
2BC.8H=2×162+11×161+12×160+8×16-1=512+176+12+0.5=700.5D。
请读者自行思考以下三个问题:①(11111111)2=(?)10②(32)12=(?)10③(FFFF)16=(?)10[提示:①③项可采用“先加1再减1的方法”比较简单]
2 十进制数向其他所有进制数的转换(即D→R)
遇到这类问题,首先考虑的是:这个需要转换的十进制数是纯整数?还是纯小数?还是带有小数点的实数?因为十进制整数向R进制整数转换的口诀是“除R取余、直到商为0、逆序输出法(即由下到上输出)”;而十进制纯小数向R进制纯小数转换的口诀是“乘R取整、直到积为0或达到精确度要求、正序输出法(即由上到下输出)”。比如:如何将十进制实数43.625转换成二进制数、八进制数、十六进制数?
经过分析,43.625是个实数,需要分两步骤做,先转换整数部分,再转换小数部分,最后合并即可得到最终结果。43.625向二进制转换的过程如下列表格所示:
自此,读者可自行计算出43.625D的等值八进制数是:53.5Q;等值的十进制数是:2B.AH。
此处,我们介绍一种可以快速“将十进制整数向二进制整数”转换的方法:例如:200D=?B,我们可以将200拆成:128+64+8;然后直接写出200的等值二进制数:11001000B。[提示:拆分时,一定要拆成2的整数次幂的累加和,先观察比200小的、一个2的整数次幂,很显然是27,即128;然后再加上128的一半64,看看128+64有没有大于200;若大于200,再让128加上64的一半32,再试一试,以此类推!]在书写等值二进制数结果的时候:先写出一个1(代表拆分出来的128),然后观察128的一半64有没有,若有就在1的右侧写一个1,若没有出现64,就在第一个1的右侧写一个0,依次类推!请读者参考以上方法,直接写出300D、400D、500D的等值二进制数。
读者也会经常遇到比较大的十进制整数向其他进制转换,此时需要灵活运用所学知识;如怎样将十进制整数229转换为十六进制数呢?最简捷的解题方法如下:229=21×228=2×(24)7=2×167=2000 0000H。当然读者也可以采用“除十六取余,直到商为0,逆序输出”法,只是建议在计算时,最好能将“229÷16”写作“229÷24”,这样计算起来就比较简单!
3 二进制数和八进制数之间的转换(即B←→Q)
首先讨论二进制数向八进制数转换的方法:小数点两侧,三位分组,不够三位的、补0凑成三位;然后再其下方写上“421”,把二进制数中的1对应的“421”中的数字进行累加,即可轻松写出答案。比如:二进制数101011.1011B向八进制数的转换过程如下方表格所示:
八进制数向二进制数转换的过程正好是上方表格的逆过程,但是务必记住:“每一个八进制数位必须使用3个二进制数位表示”。如:703.4Q=111 000 011.100 B=111000011.1B
4 二进制数和十六进制数之间的转换(即B←→H)
然后讨论二进制数向十六进制数转换的方法:小数点两侧,四位分组,不够四位的、补0凑成四位;然后再其下方写上“8421”,把二进制数中的1对应的“8421”中的数字进行累加,即可轻松写出其十六进制数结果。比如:二进制数101011.101B向十六进制数的转换过程如下方表格所示:
5 小结
综上所述,我们可以发现以下几点规律:①二进制数和八进制数之间是绝对可以精确转换的;②二进制数和十六进制数之间也是绝对可以精确转换的;③二进制向十進制转换的时候,也是可以精确转换的;④十进制整数向其他任何进制整数转换的时候,也都是可以精确转换的;⑤十进制小数向其他进制小数转换的时候,有可能出现无限循环或无限不循环、从而无法精确转换(如0.6D=0.100110011001…B)。
各种进制在日常生活中被广泛的使用,如每周7天使用的是七进制,一年四个季度使用的是四进制,一年12个月使用的是十二进制。熟练掌握以上进制转换方法后,所有进制之间的转换我们都可以轻松自如的完成转换;并且熟练掌握进制之间的转换,是学习信息技术相关领域知识的最基本要求,对于以后更深层次的专业课学习也是至关重要的。
参考文献:
[1] 百度,www.baidu.com.
[2] 爱奇艺,www.iqiyi.com.
[3] 张福炎.大学计算机信息技术教程[M].第6版,南京大学出版社.
[4] 龚沛曾.大学计算机基础[M].第6版,高等教育出版社.