十进制无论转换成二进制还是十六进制本质其实大致相同。
其本质就是利用类似移位操作的方式,只是移位单位不同而已。转换成为二进制相当于移位运算;我们知道每次右移相当于 /2 ,左移相当于* 2 ;故我们的十进制转换成二进制不过是转换成二进制的移位方式。
如:十进制数字 13
我们通过左移思想是 * 2 的思想 ,将其转换成某些二进制数字根据其分布形式能够得到十进制13的结果;如果我们最低位 为1的话说明这个二进制数字的十进制表示为1;如果次低位为1的话,说明这个二进制数字的十进制表示为2;同理我们可以追溯到13到底是怎么组合而成的。即13 = 8 + 4 + 1;也就是 二进制1101形式;但是这样回溯的方式还是比较麻烦,我们需要仔细推倒;但是我们不难发现这个方式能够成功的组成十进制数字的关键在于 *2;那么我们通过*2的方式由 1101推倒到了13,同理我们可以通过 / 2 的方式 由 13 推倒到 1101这是不难的。
那么我们来尝试 / 2 操作(记住这里是计算机的除法运算,而且是整数除法的计算)
13 / 2 ------------> 商 6 余 1
6 / 2 --------------> 商 3 余 0
3 / 2 --------------->商 1 余 1
1 / 2 ---------------> 商 0 余 1
因为除法与乘法之间是相逆的,最下面的除法必定是最上面的乘法;并且我们知道数法法则 被除数 = 除数 * 商 + 余数 这个相对于一个独立个体而言,而上述我们将这个独立个体分为了 13 、6 、 3 、 1 的阶梯话形式,并且最终使得商变为0;就是因为这个阶梯话的过程,使得我们必须按照一步一步的方式逆反获得原来的值;这时就跟每个阶梯话产生的因素有关了,即阶梯的坡度---因为是/2 操作我们阶梯的坡度不难想象是2;同理如果是16进制的话那么坡度就是16。这时候我们逆反的推倒的话,根据第一句的话,我们知道最先面的 1 / 2 -------------> 商 0 的操作是除了最多次的,这时候们就需要乘以做多次。那么次数是多少呢?不难由除数的商是小于 被除数 大于 0得出 我们在除法过程中最终的底层为1,那么可以得出最底层的结果是不会大于除数本身的即除数 <= 2 ^ 0 ;那么不难知道上述的最高层是多次*2 了 ,最多3次;这样我们将所得到的向上阶梯展示出来就是这样 1101 (左高右低)---->其十进制结果正好是13;
同理对于十六进制而言,只是阶梯的梯度不同而已;