进制与位级表示
为什么用十六进制书写位模式?
- 压缩比: 1 位十六进制恰好表示 4 位二进制, 书写长度是二进制的四分之一;
- 惯例: 以
0x开头, 例如0x1A2B;
| 二进制 | 十六进制 | 十进制 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | A | 10 |
| 1011 | B | 11 |
| 1100 | C | 12 |
| 1101 | D | 13 |
| 1110 | E | 14 |
| 1111 | F | 15 |
二进制和十六进制怎样互转?
- 二进制转十六进制: 从右往左每 4 位分一组, 最左不足 4 位补 0, 每组查表替换;
- 十六进制转二进制: 每个十六进制数字展开为 4 位二进制;
- 示例:
0x1A2B展开为0001 1010 0010 1011;
十进制和十六进制怎样互转?
- 整数部分: 反复整除 16, 记录余数, 最后把余数倒序排列;
- 小数部分: 反复乘以 16, 依次记录乘积的整数部分, 直到小数部分为 0;
314156 = 0x4CB2C
314156 / 16 = 19634 ... 12 (C)
19634 / 16 = 1227 ... 2
1227 / 16 = 76 ... 11 (B)
76 / 16 = 4 ... 12 (C)
4 / 16 = 0 ... 4
余数倒序得 4CB2C
0.75 × 16 = 12.0 → 取 12 (C)
小数部分为 0, 停止; 0.75 = 0x0.C
布尔运算有哪些?
- 非 (
~): 1 变 0, 0 变 1; - 与 (
&): 两位都为 1 时结果为 1; - 或 (
|): 任一位为 1 时结果为 1; - 异或 (
^): 两位不同时结果为 1; - 位向量: 长度为 w 的位串, 可对每一位独立施加布尔运算;