最近几天,在编写代码的时候,用到了进制相关的知识,在请教同学的时候,给发来了一个链接。上面有封装好的关于进制转换的方法,突发奇想,我能不能自己把进制的转换实现了呢?
在这里暂且只讨论整型正数,二、八、十、十六进制之间的相互转换,以后可能会对非整型负数和其他进制进行补充。
首先,我研究了进制之间相互转换的方法,如下:
从转换关系中,我们推出发现一个结论:任何进制数在转换成十进制数时,均为按权展开相加求和;十进制数在转换成任何进制数时,均为除其进制取余(这两个结论应该不止仅限于二、四、八、十六进制的相互转换)。那么,我们可以选取十进制作为中间进制,即在进行进制转换时,先把初始进制数转换为十进制数,再转换成目标进制数。
接下来,我们来详细研究一下这个过程。既然以十进制为中间进制,那么我们就需要分为两种情况进行讨论,初始值的进制是十进制 的和不是十进制的。
首先我们讨论的是初始值不是十进制的情况,因为它相对复杂一些。我们在得到初始值后,需要将其按权展开相加求和,在这之前,我们先来了解一下什么是按权展开相加求和,简单来说就是将其各个位上的数乘以其进制的n(n是这个位上数是这个数的第n位)次方,这样可能比较难以理解,我们来举个例子。