进制转换

  1. 1. 前言
  2. 2. 十进制
  3. 3. 二进制
  4. 4. 十六进制
  5. 5. 进制转换
    1. 5.1. 十六进制
      1. 5.1.1. 转换为十进制
      2. 5.1.2. 转换为二进制
    2. 5.2. 十进制
      1. 5.2.1. 转为十六进制
      2. 5.2.2. 转为二进制
    3. 5.3. 二进制
      1. 5.3.1. 转为十进制
      2. 5.3.2. 转为十六进制

前言

  • 数制是用一组固定的符号和统一的规则来表示数值的方法
  • 计算机底层是用的是数制是二进制
  • 用 Java 编程使用的是十进制。Java 底层仍使用二进制
  • 计算机常用的数制还有八进制和十六进制

十进制

十进制的基本数字是0~9,逢10进位。10称作“基数”,10^n (10的n次幂)被称作“权”。

1
2
3
4
5
10000=1*10^4
1000=1*10^3
100=1*10^2
10=1*10^1
1=1*10^0

二进制

二进制的基本数字数0~1,逢2进位。基数是2,权为 2^n。

1
2
3
4
5
10000=1*2^4
1000=1*2^3
100=1*2^2
10=1*2^1
1=1*2^0

十六进制

基本数字:0~9,A~F,A表示10,以此类推,逢16进位,基数16,权是 16^n。十六进制是二进制的简写,方便专业人员书写二进制数据。在 Java 代码中十六进制数用0X或0x做前缀。

1
2
3
4
1000=1*16^3
100=1*16^2
10=1*16^1
1=1*16^0

进制转换

十六进制

转换为十进制

1
2
3
5E(16)
= 5*16^1 + 14*16^0
= 94

转换为二进制

十六进制中的一位代表二进制中的四位,忽略前面的0。

1
2
3
4
5E(16) = 1011110(2)
5 = 1*2^2 + 1*2^0 = 0101
E = 1*2^3 + 1*2^2 + 1*2^1
= 1110

十进制

转为十六进制

十进制转为二进制便不断的除以二,保留余数,直到商为0,将所有余数倒序排列。

1
2
3
138=8A(16)
138/16=8.......A
8/16=0........8

转为二进制

十进制转为二进制便不断的除以二,保留余数,直到商为0,将所有余数倒序排列。

1
2
3
4
5
13 = 1101(2)
13/2=6........1
6/2=3........0
3/2=1........1
1/2=0........1

二进制

转为十进制

1
2
3
100010(2)
=1*2^5 + 1^2^1
=34

转为十六进制

可将二进制转为十进制,然后由十进制转为二进制。

1
100010(2)=22(16)

思路如下:

1
2
3
4
5
100010(2)
=1*2^5 + 1^2^1
=34
34/16=2......2
2/16=0......2