由于人的双手有十个手指,人类发明了十进位制记数法。然而,十进位制和电子计算机却没有天然的联系,所以在计算机的理论和应用中难以畅通无阻。究竟为什么十进位制和计算机没有天然的联系?和计算机联系最自然的记数方法又是什么呢?
这要从计算机的工作原理说起。计算机的运行要靠电流,对于一个电路节点而言,电流通过的状态只有两个:通电和断电。计算机信息存储常用硬磁盘和软磁盘,对于磁盘上的每一个记录点而言,也只有两个状态:磁化和未磁化。近年来用光盘记录信息的做法也越来越普遍,光盘上海一个信息点的物理状态有两个:凹和凸,分别起着聚光和散光的作用。由此可见,计算机所使用的各种介质所能表现的都是两种状态,如果要记录十进位制的一位数,至少要有四个记录点(可有十六个信息状态),但此时又有六个信息状态闲置,这势必造成资源和资金的大量浪费。因此,十进位制不适合于作为计算机工作的数字进位制。那么该用什么样的进位制呢?人们从十进位制的发明中得到启示:既然每种介质都是具有两个状态的,最自然的进位制当然是二进位制。
二进位制所需要的记数的基本符号只要两个,即0和1。可以用1表示通电,0表示断电;或1表示磁化,0表示未磁化;或1表示凹点,0表示凸点。总之,二进位制的一个数位正好对应计算机介质的一个信息记录点。用计算机科学的语言,二进位制的一个数位称为一个比特(bit),8个比特称为一个字节(byte)。
二进位制在计算机内部使用是再自然不过的。但在人机交流上,二进位制有致命的弱点——数字的书写特别冗长。例如,十进位制的100000写成二进位制成为11000011010100000。为了解决这个问题,在计算机的理论和应用中还使用两种辅助的进位制——八进位制和十六进位制。二进位制的三个数位正好记为八进位制的一个数位,这样,数字长度就只有二进位制的三分之一,与十进位制记的数长度相差不多。例如,十进位制的100000写成八进位制就是303240。十六进位制的一个数位可以代表二进位制的四个数位,这样,一个字节正好是十六进位制的两个数位。十六进位制要求使用十六个不同的符号,除了0—9十个符号外,常用A、B、C、D、E、F六个符号分别代表(十进位制的)10、11、12、13、14、15。这样,十进位制的100000写成十六进位制就是186A0。
二进位制和八进位制、二进位制和十六进位制之间的换算都十分简便,而采用八进位制和十六进位制又避免了数字冗长带来的不便,所以八进位制、十六进位制已成为人机交流中常用的记数法。