前言

在我们的各种计算机编程语言中,对于数值通常都有四种进制表示。分别是:二进制、八进制、十进制以及十六进制。

千万不要被这些名词吓住了,其实所谓的几进制就是逢几进一的意思。比如我们在日常生活中使用的阿拉伯表示的几百几千,就是十进制表示法。

为什么说是十进制表示法呢?因为它的数字范围是 0-9,要想表示十这个数只能使用 10 表示。也就是满 10 进 1,将低位重置归 0 来计算。

同理,二进制表示法就是满 2 进 1,也就是它的数字范围是 0 和 1。比如二进制的 10 表示的其实是阿拉伯数字 2。特别强调的一点是,在当前的计算机各大编程语言中是没有对应的二进制表示法的,它属于计算机底层知识。虽然没法表示,但是我们需要知道二进制的原理。

不同于二进制,对于八进制和十六进制在各种编程语言中是可以直接书写的。八进制的数字范围是 0-7,满 8 进 1。在编程语言中通常使用 0 做前缀表示八进制,比如 010 就是八进制表示法,它对应的阿拉伯数字是 8,011 自然就是 9 了。

十六进制使用 0-9 及 A-F 表示。A 表示的就是十进制的 10,以此类推 F 表示的就是十进制的 15 了(A-F 不区分大小写)。在编程编程语言中使用 0x 或 0X 作为前缀表示十六进制。比如 0x1A 就是十进制的 26 了。

为了更方便于理解进制的关系我们来使用一个 table 表格看下 0-20 在十进制、二进制、八进制以及十六进制中分别如何表示:

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 20 4 4
5 21 5 5
6 30 6 6
7 31 7 7
8 40 10 8
9 41 11 9
10 50 12 A
11 51 13 B
12 60 14 C
13 61 15 D
14 70 16 E
15 71 17 F
16 80 20 10
17 81 21 11
18 90 22 12

知道了十进制与其他进制的对应关系后我们再来看下在编程语言中如何表示八进制、十进制以及十六进制。下面以 Java 语言为例来看下数字 20 如何表示:

  1. // 八进制
  2. int octal = 024;
  3. // 十进制
  4. int decimal = 20;
  5. // 十六进制
  6. int hex = 0x14;
Note
特别强调的一点是,编程语言是没有二进制表示法的。二进制属于计算机底层的东西,高级编程语言无法表示。

其他进制转十进制

二进制转十进制

规则: 从最低为开始(右边的表示低位),将每个位置上的数提取出来,乘以2的(位数-1)次方,然后求和。

案例:

进制转换 - 图1

八进制转十进制

规则: 从最低为开始(右边的表示低位),将每个位置上的数提取出来,乘以8的(位数-1)次方,然后求和。

案例:

进制转换 - 图2

十六进制转十进制

规则: 从最低为开始(右边的表示低位),将每个位置上的数提取出来,乘以16的(位数-1)次方,然后求和。

案例:

进制转换 - 图3

其他进制转二进制

十进制转二进制

进制转换 - 图4

八进制转二进制

进制转换 - 图5

十六进制转二进制

进制转换 - 图6

其他进制转十六进制

二进制转十六进制

进制转换 - 图7

十进制转十六进制

进制转换 - 图8

其他进制转八进制

二进制转八进制

进制转换 - 图9

十进制转八进制

进制转换 - 图10