2. 八进制和十六进制
由于二进制表达数字时位数比较多。因此在 C 语言中常使用八进制和十六进制来表示一个二进制的数值。
原因是 8 正好是 2 的三次方,16 正好是 2 的四次方。即 8 进制的一个位正好可以转换位二进制的三个位且没有余数。十六进制也是如此。
八进制
逢八进一,每个位用 0~7 的数字表示。
十六进制
逢十六进一,每个位的值如果在十以内则用 0~9 的数字表示。大于等于十的部分用英文字母表示,如A 或 a 表示 10,B 或 b 表示 11,……,F 或 f 表示 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 转为 二进制表示。