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的特性。