详解进制之间的转换

目录

一、十进制转换

1、十进制转换为二进制

2、十进制转换为八进制

3、十进制转换为十六进制

二、二进制转换

1、二进制转换为八进制

2、二进制转换成十进制

3、二进制转换为十六进制

三、八进制转换

1、八进制转换成二进制

2、八进制转换成十进制

3、八进制转换成十六进制

四、十六进制转换

1、十六进制转换二进制

2、十六进制转换八进制

3、十六进制转换十进制


一、十进制转换

1、十进制转换为二进制

1、用2除十进制数,得出口余数和商。

2、重复步骤1,直到商为0为止。

3、将余数从下往上排列,即得到二进制数。

示例:

将十进制10转换成二进制

10/2=5...0

5/2=2...1

2/2=1...0

1/2=0...1

转换成二进制为1010

2、十进制转换为八进制

1、用8除十进制数,得出口余数和商。

2、重复步骤1,直到商为0为止。

3、将余数从下往上排列,即得到八进制数。

示例:

将十进制136转换成八进制

136/8=17...0

17/8=2...1

2/8=0...2

转换成八进制为210

3、十进制转换为十六进制

1、用16除十进制数,得出口余数和商。

2、重复步骤1,直到商为0为止。

3、将余数从下往上排列,如果余数为0-9,则用其本身表示;

4、如果余数为10-15,则用大写或小写字母A-F表示,即10表示为A,11表示为B,一直到15表示为F。

示例:

将十进制255转换成十六进制

255/16=15...15

15/16=0...15

从9开始用字母表示,15是F,所以转换成十六进制为FF

二、二进制转换

1、二进制转换为八进制

1. 从二进制数的最右边开始,每次取连续的三位(如果最左边不足三位,则按实际位数处理)。
 
2. 将这三位二进制数转换为其对应的八进制数
(可以参照以下对应关系:000 -> 0, 001 -> 1, ..., 100 -> 4, 101 -> 5, ..., 111 -> 7)。
 
3. 按照从右到左的顺序,将得到的所有八进制数连接起来。

示例:

将二进制数 1101010 转换为八进制:

1、取最右边的三位:101,对应八进制数为 5。

2、向左取三位:100,对应八进制数为 4。

3、最左边还剩一个 1,由于不足三位,直接作为一位八进制数 1。

二进制数 1101010 转换为八进制后为 145。

2、二进制转换成十进制

 1. 从二进制数的最右边(个位)开始,每位数字乘以2的相应幂次。

 • 最右边一位的权重是 (2^0),因为 (2^0 = 1)。

 • 向左第二位的权重是 (2^1)。

 • 第三位是 (2^2)。

 • 以此类推,第n位的权重是 (2^{(n-1)})。

 2. 将每一位上的数字与对应的权重相乘,然后将所有这些乘积相加。

示例: 

例如,将二进制数 1010 转换为十进制:

1010
=1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 
= 8 + 0 + 2 + 0 
= 10


二进制数 1010 转换为十进制数为 10

3、二进制转换为十六进制

1. 从二进制数的最右边开始,每次取连续的四位(如果最左边不足四位,则按实际位数处理)。
 
2. 将这四位二进制数转换为其对应的十六进制数
(可以参照以下对应关系:0000 -> 0, 0001 -> 1, ..., 1000 -> 8, 1001 -> 9, 1010 -> A, 1011 -> B, ..., 1111 -> F)。
 
3. 按照从右到左的顺序,将得到的所有十六进制数连接起来。

示例:

将二进制数 10110101 转换为十六进制:

1、取最右边的四位:0101,对应十六进制数为 5。

2、向左取四位:1011,对应十六进制数为 B。

二进制数 10110101 转换为十六进制后为 B5。

三、八进制转换

1、八进制转换成二进制

1. 将八进制数的每一位分解,然后将其转换为对应的三位二进制数。
 
 • 八进制1对应二进制001
 • 八进制2对应二进制010
 • 八进制3对应二进制011
 • 八进制4对应二进制100
 • 八进制5对应二进制101
 • 八进制6对应二进制110
 • 八进制7对应二进制111

2. 按照从左到右的顺序,将每位八进制数转换得到的二进制数连接起来。

示例:

将八进制数 125 转换为二进制:

1、 第一位数字 1 对应的二进制是 001。
2、 第二位数字 2 对应的二进制是 010。
3、 第三位数字 5 对应的二进制是 011。
4、 得到001010011,通常会舍弃二进制前面的零

所以,八进制数 125 转换为二进制后为 1010011。

2、八进制转换成十进制

1、按照权重从右到左依次乘以8的幂次方,第0位的权值是的次方,第1位的权值是的次方,第2位的权值是的次方,依次递增下去。

2、将八进制数的每一位数字,乘以对应的权值,然后将结果相加,得到的值就是十进制的值。

3、如果有小数部分,则从小数点开始,按照权重从左到右依次乘以8的幂次方。

4、如果有负号,则将其应用于最终结果。

示例:

将八进制数123转换为十进制数:

123
=1*8^2 + 2*8^1 + 3*8^0 
= 64 + 16 + 3 
= 83

八进制数123的十进制表示为83。

3、八进制转换成十六进制


1、八进制转换成十六进制的过程需要先转换为十进制,然后再从十进制转换为十六进制。

2、八进制直接转换成十六进制可以采用每三位一组转换为四位二进制,然后再将二进制转换为十六进制的方式。

示例: 

一、将八进制数123转换为十六进制:

1. 先转换为十进制:

123
=1*8^2 + 2*8^1 + 3*8^0 
= 64 + 16 + 3 
= 83
 
2. 再转换为十六进制:83对应的十六进制是53(因为165=80,31=3,所以是53)

八进制数123对应的十六进制数是53。


二、直接从八进制转到十六进制,也可以通过以下方式:

1、将八进制数的每一位拆分,然后转换为对应的四位二进制数,最后将这些二进制数合并转换为十六进制。

2、对于较大的数字,可以采用除以16取余法,逆序排列余数得到的即为十六进制数。


八进制数75转换为十六进制:

 • 八进制的7对应二进制的111
 • 八进制的5对应二进制的101

组合在一起是 111101,这是一个六位二进制数。由于十六进制是逢16进1,将其分为两组:111和101。

 • 111(二进制)= 7(十进制)= 7(十六进制)
 • 101(二进制)= 5(十进制)= 5(十六进制)

八进制数75转换为十六进制数就是3D。

四、十六进制转换

1、十六进制转换二进制

遵循的原则是将十六进制数的每一位转换成相应的四位二进制数。

 1. 整数部分转换:

 • 从十六进制数的最右侧(最低位)开始,将每一位转换为对应的4位二进制数。

 • 十六进制数0-9分别对应二进制数0000到1001。

 • 十六进制数A-F分别对应二进制数1010到1111。

 2. 小数部分转换:

 • 如果有小数点后的小数部分,则同样处理,自左向右每四位一组转换为一个二进制位。

示例:

将十六进制数AB.1F转换成二进制:

1、A 对应 1010
2、B 对应 1011
3、 .1 对应二进制小数点后的 0001
4、F 对应 1111

十六进制数 AB.1F 转换成二进制是 10101011.00011111。

2、十六进制转换八进制

1. 首先将十六进制数转换为二进制数。

2. 将得到的二进制数按照每三位一组进行分组(从右向左,不足三位的高位补零)。

3. 分组后的每三位二进制数再转换成对应的八进制数。

示例:

1、将十六进制数 A3C7 转换成八进制,首先转为二进制:

 • 十六进制 A 对应二进制 1010
 • 十六进制 3 对应二进制 0011
 • 十六进制 C 对应二进制 1100
 • 十六进制 7 对应二进制 0111

合并后得到二进制数:1010001111000111

2、然后按每三位一组划分:

 • 第一组:101 -> 八进制 5
 • 第二组:001 -> 八进制 1
 • 第三组:110 -> 八进制 6
 • 第四组:000 -> 八进制 0
 • 第五组:111 -> 八进制 7

十六进制数 A3C7 转换为八进制数是 51607。

3、十六进制转换十进制

 1. 将十六进制数的每一位乘以相应的权重(该位权是 16 的幂次)。

 2. 从右向左(对于整数部分)或从左向右(对于小数部分)进行计算。

 3. 将所有结果相加得到最终的十进制数。

示例:

将十六进制数 A3C7 转换成十进制:

1、最右侧的数字 7 在十六进制中代表的数值是 (7*16^0)。

2、向左第二位是 C,在十六进制中代表的数值是 (12*16^1)。

3、再向左一位是 3,对应的数值是 (3*16^2)。

4、最左边是 A,在十六进制中代表的数值是 (10*16^3)。


A3C7

= 10*16^3 + 3*16^2 + 2*16^1 + 7*16^0

= 10*4096 + 3*256 + 12*16 + 7*1

= 40960 + 768 + 192 + 7

= 41927

十六进制数 A3C7 转换为十进制数是 41927。

你可能感兴趣的:(Java,C语言,Python,算法)