2. 八进制和十六进制

由于二进制表达数字时位数比较多。因此在 C 语言中常使用八进制十六进制来表示一个二进制的数值。

原因是 8 正好是 2 的三次方,16 正好是 2 的四次方。即 8 进制的一个位正好可以转换位二进制的三个位且没有余数。十六进制也是如此。

八进制

逢八进一,每个位用 0~7 的数字表示。

十六进制

逢十六进一,每个位的值如果在十以内则用 0~9 的数字表示。大于等于十的部分用英文字母表示,如Aa 表示 10,Bb 表示 11,……,Ff 表示 15。

二进制、八进制、十六进制互转

二进制转八进制时,将二进制的最右侧起的每相邻三位转为 八进制的位即可。

如:

二进制
+---+---+---+---+---+---+---+---+
| 0   1   0   0   1   0   1   1 |
+---+---+---+---+---+---+---+---+

拆解二进制
+---+---+ +---+---+---+ +---+---+---+
| 0   1 | | 0   0   1 | | 0   1   1 |
+---+---+ +---+---+---+ +---+---+---+

每三个二进制位转为一个八进制的位
+-------+ +-----------+ +-----------+
|   2   | |     1     | |     3     |
+-------+ +-----------+ +-----------+
八进制就是: 213

二进制转十六进制时,将二进制的最右侧起的每相邻四位转为十六进制的位即可。

如:

二进制
+---+---+---+---+---+---+---+---+
| 0   1   0   0   1   0   1   1 |
+---+---+---+---+---+---+---+---+

拆解二进制
+---+---+---+---+ +---+---+---+---+
| 0   1   0   0 | | 1   0   1   1 |
+---+---+---+---+ +---+---+---+---+

每四个二进制位转为一个十六进制的位。
+---------------+ +---------------+
|       4       | |       B       |
+---------------+ +---------------+
十六进制就是: 4B

由八进制转为二进制时,只要将八进制的一个位拆解成三个二进制位,然后排列在一起即可。十六进制转二进制时要将一个位拆解成四个二进制位,然后排列在一起即可。

练习:

思考如何将十六进制的 A3 转为 二进制表示。