进制的转换

例题引入

首先我们由牛客网上一道Java专项练习题引入:
进制的转换
那我们先来看一下八进制的13如何转十进制:

进制的转换
八进制的14转为十进制:
进制的转换
八进制的204转为十进制:
进制的转换
所以可得:

11 x12=132

由此可知该题选A。

那么正确的做法应该是怎么样的呢?

首先我们可以假设这个式子现在是x进制

对A选项来说,我们可以得出如下的公式:

进制的转换
最后解得x=8或者x=-1(不符合题意直接去掉)即我们计算出该条式子采用的是八进制。

下面让我们来系统学习一下各机制之间是如何转换的。

1.十进制与二进制之间的相互转换

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

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

(具体用法如下图)
进制的转换

(2)二进制数转换为十进制

方法为:把二进制数按权展开、相加即得十进制数。

(具体用法如下图)

进制的转换

2.十进制转八进制或者十六进制有两种方法

这里补充说一下十六进制和八进制的表示方法:

Java中十六进制适用所有整数数据类型,以前缀0x或者0X,后跟0-9或a-f(A-F)来表示。其中a-f即分别对应数字10-15

而八进制前缀是用0来表示,后跟0-7

下面继续看两种转换方法:

第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。

第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

(具体用法如下图)

进制的转换

3.八进制或者十六进制转成十进制

方法为:把八进制、十六进制数按权展开、相加即得十进制数。

(具体用法如下图)

进制的转换

4.八进制转二进制

方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

(具体用法如下图)
进制的转换

5.二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

(具体用法如下图)
进制的转换

6.二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

进制的转换

7.十六进制转二进制

方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

(具体用法如下图)
进制的转换