附
附
录
录
A
A
计
计
数
数
系
系
统
统
人们使用很多计数系统来表示数字。有些计数系统(如罗马数字)不适合用于算术运算;而印度计数
系统经过改进,并传入到欧洲后变成了阿拉伯计数系统,这种数字方便了数学、科学和商业计算。现代的
计算机计数系统是基于占位符概念的,使用了最先出现在印度计数系统中的零。然而,这种原理被推广到
其他计数系统。因此,虽然在日常生活中使用的是下一节将介绍的十进制,但计算领域通常使用八进制、
十六进制和二进制。
A.1 十进制数
数字的书写方式是基于 10 的幂数。例如,对于数字 2468,2 表示 2 个 1000,4 表示 4 个 100,6 表示
6 个 10,8 表示 8 个 1。
2468 = 2 × 1000 + 4 × 100 + 6 × 10 + 8 × 1
一千是 10 × 10 × 10 或 10 的 3 次幂,用 10
3
表示。使用这种表示法,可以这样书写上述关系:
2468 = 2 × 10
3
+ 4 × 10
2
+ 6 × 10
1
+ 8 × 10
0
因为这种数字表示法是基于 10 的幂,所以将它称作基数为 10 的表示法或十进制表示法。可以用任何
数作基数。例如,C++允许使用基数 8(八进制)和基数 16(十六进制)来书写整数(请注意,10
0
为 1,
任何非零数的 0 次幂都为 1)。
A.2 八进制整数
八进制数是基于 8 的幂的,所以基数为 8 的表示法用数字 0-7 来书写数字。C++用前缀 0 来表示八进
制表示法。也就是说,0177 是一个八进制值。可以用 8 的幂来找到对应的十进制值:
八 进 制 十 进 制
177 = 1 × 8
2
+ 7 × 8
1
+ 7 × 8
0
= 1 × 64 + 7 × 8 + 7 × 1
= 127
由于 UNIX 操作系统常使用八进制来表示值,因此 C++和 C 提供了八进制表示法。
A.3 十六进制数
十六进制数是基于 16 的幂的。这意味着十六进制的 10 表示 16 + 0,即 16。为表示 9-16 值,需要其
他一些数字,标准的十六进制表示法使用字母 a-f。C++接受这些字符的大写和小写版本,如表 A.1 所示。
表 A.1 十六进制数
十六进制数 十 进 制 值
a 或 A
10
b 或 B
11
c 或 C
12
d 或 D
13
e 或 E
14
f 或 F
15