2009年1月23日星期五

关于2进制、8进制及16进制间的转换 —— 《什么是数学》

    今早上在看What Is Mathematics中关于进制的内容时,突然联想之前在数学作业本上做到的一个题目~计算后发现,2、8及16进制间的转换可以变得更加快捷~

    通常,将8进制和16进制转成2进制都会借助10进制为中间量,再进一步转化到2进制。反过来也是以10进制作为中间量,这样不免有些麻烦~事实上,可以无需借助10进制,直接进行转换。

2进制->8进制和16进制

    转成8进制时,把每三个2进制数字分成一组,每组用一个8进制数字来替代即可。

CODE:

EXP:∵25 = 11 001(2)
      001(2) = 1(8)
      11(2) = 3(8)
     ∴25 = 11 001(2)=31(8)

    转成16进制时,类似的,把每4个二进制数划为一组,每组用一个16进制数替代即可。例子就不给出了~

    似乎这个性质可以推广:

CODE:

把2进制数转成以2n为基地的进制数时,只需要把二进制数每n个划为一组,每组用一个2n进制数替代即可.
似乎可以证明,但是我目前尚不清楚如何证明- -

8、16进制->2进制

    把8进制数转成2进制数时,只需要把每一位数字转换成相应的3位二进制数,如果不够三位,往左边用0补充

CODE:

EXP: ∵25 = 31(8)
       1(8) = 001(2)
       3(8) = 11(2)
     ∴25 = 31(8) = 11001(2)

    把16进制转成2进制时,只需要把每一个数字转成相应的4位二进制数,不够的往左边用0补充

    类似的,这个似乎也应可以推广:

CODE:

把一个2n作为基底的进制数转换成2进制时,只需要把每一位数字转成相应的n位二进制数,不够的往左用0补充。
同样的,我不知道如何证明-。-||

    这样,平时笔算进制转换时应该会快不少~或许还可以作为一个不错的进制转换算法~

The Notes for What is Mathematics

2 条评论:

  1. 很好,学习了~
    PS:错别字:“把2进制数转成以2n为基地的进制数时,只需要把二进制数每n个划为一组”
    基地-->基底......

    回复删除
  2. ……嗯,的确~
    算了,懒得改了,一大堆的HTML还不容易找= =

    回复删除

1、可以使用<b>、<i>、<a>等Html标志,让评论更有特色...
2、支持OpenID登录,技术达到国际先进水平。但切记,评论内容不代表本站观点!
3、当遇到“连接被重置”、“连接超时”和“此网页无法访问”等而发表不了评论的话,请多刷新几次页面,或迟三分钟后再试;
4、对你的浏览造成不便,站长在此代表全国G.FW工作人员向你鞠躬致歉!!!