做为程序员经常会涉及到各种进制之间互相转化的问题,下面我就以我们常见的二进制,八进制,十进制,十六进制的互相转化的问题做一简单的探究:
二进制的表现形式:二进制是计算机能够识别的语言,任何数据都要在计算机底层转化成二进制,计算机才可以进行简单或者复杂的任何运算。所以二进制是计算机的最基本语言。二进制的变现形式是以:1或0的形式进行排列的。如:0001-0101-0010-1001
十进制是我们生中常见的一种的计数方式,几乎各行各业堵在用十进制进行简单或者复杂的运算。但是无论是什么进制的数在计算机进行运算的时候都会先转换成二进制的数以后,计算机才会去进行计算。所以我们必须知道各个进制之间是怎么转化的?下面我们就随便写先写一个二进制的数,把这个二进制的数转化成十进制,八进制,十六进制。
随机给定一个二进制的数:0100101
转化成十进制的数(看图):
上面的二进制数是:0100101,那么我们把他的每一位对应到相应的格子中,从右向左依次对应。1对1,0对2,1对4,0对8,0对16
1对32,一直一一向对到二进制的最高位没有1为止,所以第7位的0可以不用管了。
下面就来计算一下(看图):
上面就是二进制转化成十进制的算法。好我们就以这个37十进制的数来推算出37他自身的八进制数和十六进制的数看一下怎么去转化?
下面就是37这个十进制数转八进制数的算法(如图):
同样的,我们把这个十进制数37转化成16进制的数,在这个地方一定要明确,二进制数是满2进1,八进制是满8进1,十进制数是满10进1,十六进制数是满16进1,同时还要注意:十六进制数在满10以后就不能用数字来表示了,因为没有相应的数字来和它对应了,所以我们在这里找到了一种可以解决这种问题的办法,就是以英文字母来代替A、B、C、D、E、F分别对应10、11、12、13、14、15到十六以后就要进一位了所以不必再写。
下面我们就来看一下把一个十进制37怎么转化成一个16进制的数呢?如图:
以上我们就完成了一个二进制的数转化成十进制的数,再将这个十进
的数转化成了八进制和十六进制的数。我们从上面可以看出来二进制
转化成八进制或是十六进制都是以十进制的数为桥梁进行转化的,也就
是说我们十进制的数是一个中间的纽带。
那么我们如果碰到了一个十六进制的数或者八进制的数那么实现各个进制之间的互相转化呢?首先我们要明确一个核心的思想我们各个进制之间的互相转化都是以十进制为中间的纽带,所以我们在这里的纽带依然没有变还是以十进制为中间的桥梁。
进制之间转化的核心思想是:十进制为转化两个不同进制的中间桥梁。
下面我们就随机写了几组数据,碰上二进制的数,我们要将其转化为:十进制,八进制,十六进制;碰上八进制的数我们要将其转化为:二进制,十进制,十六进制的;碰上八进制的数我们将其转化为:二进制,十进制和十六进制的;最后我们碰上十六进制的数将其转化为:二进制,十进制和八进制的数。