08-十六进制
15.2.2 十六进制
十六进制(hexadecimal或hex)是指十六进制记数系统。该系统基于16的幂,用0~15表示数字。但是,由于没有单独的数(digit,即0~9这样单独一位的数)表示10~15,所以用字母 A ~ F 来表示。例如,十六进制数 A3F (在C中写作 0xA3F )表示为:
10×162 +3×161+ 15×160 = 2623(十进制)
由于 A 表示 10 , F 表示 15 。在C语言中, A ~ F 既可用小写也可用大写。因此,2623也可写作 0xa3f 。
每个十六进制位都对应一个4位的二进制数(即4个二进制位),那么两个十六进制位恰好对应一个8位字节。第1个十六进制表示前4位,第2个十六进制位表示后4位。因此,十六进制很适合表示字节值。
表15.2列出了各进制之间的对应关系。例如,十六进制值 0xC2 可转换为11000010。相反,二进制值11010101可以看作是1101 0101,可转换为 0xD5 。
| 十进制 | 十六进制 | 等价二进制 |
| :----- | :----- | :----- | :----- | :----- |
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| 10 | A | 1010 |
| 11 | B | 1011 |
| 12 | C | 1100 |
| 13 | D | 1101 |
| 14 | E | 1110 |
| 15 | F | 1111 |
介绍了位和字节的相关内容,接下来我们研究C用位和字节进行哪些操作。C有两个操控位的工具。第1个工具是一套(6个)作用于位的按位运算符。第2个工具是字段(field)数据形式,用于访问 int 中的位。下面将简要介绍这些C的特性。