进制介绍与进制之间的转换

来源:互联网 发布:linux配置vnc centos 编辑:程序博客网 时间:2024/05/22 15:43

1、什么是进制?

  进制就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

  电脑里边我们经常使用的是二进制、八进制、十进制、十六进制。十进制我们非常熟悉,二进制也知道,那么八进制、十六进制是怎么来的呢?

2、八进制、十六进制的由来?

  我们知道,进制越大,数据表示形式越短。例如,两个二进制数位能够表示的数据情况为2^2=4种,两个八进制能够表示的数据情况为8^8=64种。

  正因为如此,由于二进制数在使用中位数太长,不容易记忆,所以又提出了八进制、十六进制数。下面以二进制数10110110为例来说一下八进制、十六进制的由来。

  八进制

    将二进制数据从右向左开始,每三位合并为一组,然后计算出每组的十进制数据,最终将求得的十进制数据做拼接,就形成了一个新数据,这种数据成为八进制数据。

    如下(左边位数不够要用0补齐):

1

    所以二进制数10110110八进制表示形式就是266。

  十六进制

    将二进制数据从右向左开始,每四位合并为一组,然后计算出每组的十进制数据,最终将求得的十进制数据做拼接,就形成了一个新数据,这种数据成为十六进制数据。

    如下:

1

    所以二进制数10110110八进制表示形式就是116。是吗??NO!因为十六进制数11的表示形式为b,所以其十六进制表示形式应为b6。

3、其它进制到十进制的转换

  首先观察一个十进制数,以12345为例吧,我们很容易得出这样一个式子:


  如果我们将数从右到左以0开始编号,如个位数编号为0,十位数编号为1,那么可以得出规律:

    12345的十进制数值为:位数 * 10的编号次幂。进而验证可得,二进制的十进制数值为:位数 * 2的编号次幂;二进制的十进制数值为:位数 * 8的编号次幂;十六进制的十进制数值为:位数 * 16的编号次幂。

    以二进制数1010为例检验上述结论:1 * 2^3 + 1 * 2^1=10 ,结论正确(大家可以下去自己多多验证)。

4、十进制到其它进制的转换

  我们有最常用的转换方法:用十进制数据除以目标进制得到余数,并将余数从最后一个到第一个排列,就是转换后的目标进制表示形式(简称“除基取余,直到商为0,余数反转”)。以十进制45向二进制转换为例:


  得到的数值排列:101101,所以十进制45的二进制表示形式为101101,同理,如果求八进制、十六进制表示形式,用45除以8、16即可。

5、进制之间的快速转换

  (1)十进制转换为二进制

    8421码,8421码就是如下形式:


    如果将十进制数45向二进制转换的话,直接向8421码里套就行了,这个方法比较大众,就不在这里讲了。

  (2)二进制向八进制、十六进制转换

    将二进制数据从右向左开始,每三位、四位合并为一组,然后计算出每组的十进制数据,最终将求得的十进制数据做拼接,分别形成一个新数据,分别对应该二进制数对应的八进制、十六进制数值(文章前半部分已经讲过,不再赘述)。

  小结:进制转换虽然在编程中用的很少,但是这是一个优秀程序员的基本功,还是需要大家熟练掌握的,有讲的不到位的地方,欢迎大家斧正。


3 0
原创粉丝点击