
2.3.1 数字系统的基数
计数系统中的基数定义了用于表示数字的符号数量。大多数人都在基数为10的系统下进行数学计算,这个系统的符号是0、1、2、3、4、5、6、7、8和9。
然而,这并不是唯一的选择。只要有足够的符号来表示值,就可以使用任何基数。例如,五进制(基数为5)使用0~4的符号,而八进制(基数为8)使用0~7的符号。
提示:数字的基数可以用下标表示。例如,1010是写成十进制(基数为10)的数字,而102则是写成二进制(基数为2)的数字。
对于大于10的基数,我们也会使用字母作为符号。例如,十一进制就会增加字母a,那么就会有以下这些符号:0、1、2、3、4、5、6、7、8、9和a。十六进制则会用到这些符号:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f。
提示:在十六进制中,字母的大小写无关紧要,所以a和A都代表十进制数值10。
在每个进制中,我们都需要有能力表示比基数更大的数值。为了做到这一点,我们使用多位数。
计算机是二进制系统,它们利用1和0进行所有的数据存储和处理操作。但是,这种方式效率不高,写起来很麻烦。例如,201410的值等同于111110111102。
虽然计算机使用的是二进制,但为了方便阅读,工具经常会用十六进制来显示数值。十六进制的数值可能以以下几种方式表示:下标方式(1d16)、前缀方式(0x1d)或后缀方式(1dh)。
十六进制的一个优点是,它的数值是2的幂。这意味着可以通过字符替换便捷地将值在二进制和十六进制之间转换。图2.1展示了每个十六进制符号如何映射到十进制和二进制。

图2.1 十六进制符号与十进制和二进制的映射
例如,我们来看一下二进制数值111110111102。每一个十六进制位都表示四个二进制位,因此,这个数值可以从右向左分成三组:111、1101和1110。根据图2.1,我们可以看出这三组分别等于十六进制的数字7、d和e,所以,整个数值可以用0x7de来表示。

虽然这些进制转换可以手动完成,但使用工具通常更快且更准确。图2.2展示了使用Windows计算器进行进制转换的示例。