附录A 计数系统
本章概述
本附录介绍计算机中常用的计数系统,包括二进制、八进制、十进制和十六进制,以及它们之间的相互转换方法。
A.1 十进制数
十进制(Base-10)是最常用的计数系统,使用数字0-9。
| 十进制 | 说明 |
|---|---|
| 0-9 | 个位数字 |
| 每进一位 | 乘以10 |
示例:
123 = 1×10² + 2×10¹ + 3×10⁰
= 100 + 20 + 3A.2 二进制数
二进制(Base-2)使用数字0和1,是计算机的基础。
| 特点 | 说明 |
|---|---|
| 数字范围 | 0-1 |
| C++11前缀 | 0b |
| 每进一位 | 乘以2 |
C++中表示:
cpp
int binary1 = 0b1010; // 二进制(= 10)
int binary2 = 0b11111111; // 二进制(= 255)转换示例:
0b1010 = 1×2³ + 0×2² + 1×2¹ + 0×2⁰
= 8 + 0 + 2 + 0
= 10A.3 八进制数
八进制(Base-8)使用数字0-7。
| 特点 | 说明 |
|---|---|
| 数字范围 | 0-7 |
| 前缀 | 0(如 017) |
| 每进一位 | 乘以8 |
C++中表示:
cpp
int octal = 017; // 八进制
int decimal = 15; // 十进制(017 = 1×8 + 7 = 15)A.4 十六进制数
十六进制(Base-16)使用数字0-9和字母A-F。
| 数字 | 十六进制值 | 数字 | 十六进制值 |
|---|---|---|---|
| 0-9 | 0-9 | A | 10 |
| B | 11 | C | 12 |
| D | 13 | E | 14 |
| F | 15 |
C++中表示:
cpp
int hex1 = 0x1A; // 十六进制
int hex2 = 0xFF; // 十六进制(= 255)A.5 二进制和十六进制对照表
二进制和十六进制的转换很方便,每4位二进制对应1位十六进制:
| 十六进制 | 二进制 | 十六进制 | 二进制 |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | A | 1010 |
| 3 | 0011 | B | 1011 |
| 4 | 0100 | C | 1100 |
| 5 | 0101 | D | 1101 |
| 6 | 0110 | E | 1110 |
| 7 | 0111 | F | 1111 |
转换示例:
0x1A = 0001 1010 (二进制)
= 26 (十进制)A.6 进制转换方法
十进制转其他进制
cpp
// 十进制转二进制(除2取余)
int dec = 10;
// 10 / 2 = 5 余 0
// 5 / 2 = 2 余 1
// 2 / 2 = 1 余 0
// 1 / 2 = 0 余 1
// 结果:1010
// C++中使用流控制符
cout << dec << endl; // 10
cout << oct << dec << endl; // 12
cout << hex << dec << endl; // a其他进制转十进制
cpp
// 二进制转十进制
int bin = 0b1010; // = 10
// 八进制转十进制
int oct = 012; // = 10
// 十六进制转十进制
int hex = 0xA; // = 10