第二章 计算机系统
2.1 计算机中的数制
2.1.1 二进制计数制
日常生活中,人们常用十进制计数法进行计数。十进制计数法的特点是采用0,1, …,9共10个基本计数符号进行计数。在一个十进制数中,处在不同数位上的数字代表的数值不同。例如,处在个位上的“5”代表数值5,处在十位上的“5”代表50,处在百位上的“5”代表500。实际上,每个数位都对应着一个权值,而处在该数位上的数字所代表的数值正是这个数字与相应权值的乘积。十进制数中各数位的权值是以10为底的幂,个位的权值是100,十位的权值是101,百位的权值是102,等等,因此处在个位上的“5”代表的数值是5×100,处在十位上的“5”代表的数值是5×101,处在百位上的“5”代表的数值是5×102。一个十进制数所代表的数值是每个数位上的数字所代表的数值的和,例如
365=3×102+6×101+5×100
因此,十进制作为一种计数制,有两个特征:(1)使用10个基本计数符号。在一种计数制中,所使用的基本计数符号的个数称为数制的基;也就是说,十进制的基是10。(2)在十进制数中,每个数位对应一个权值,权值是10的幂次。
尽管十进制在人们的日常生活中广泛使用,但是现代计算机并没有采用它,而采用的是二进制计数制。二进制也是一种计数方法,这种计数制的基是2;也就是说,使用两个计数符号0和1,例如1011011。同十进制计数制一样,在二进制数中,每个数位也对应一个权值,权值是2的幂次。可以仿照十进制中按权值展开的方式求得一个二进制数所代表的具体数值,例如
(1011011)2=1×26+0×25+1×24+1×23+0×22+1×21+1×20=(91)10
在现代计算机中,无论数值、文字、图片,还是指令,最终都采用二进制数表示。为什么不使用人们更为熟悉的十进制计数制呢?这是因为若采用十进制,计算机的设计将会更加复杂。采用二进制可以简化计算机的电路设计,提高计算机的运算可靠性,从而提升计算机的运算速度,降低计算机的成本。具体而言,在二进制中,0和1两个计数符号只需两种对立的物理状态就可以实现,例如可以用电平的高低或电流的有无加以实现;而十进制则需要10种不同的物理状态才能表示出所需要的10个计数符号。同时,由于二进制只需要两个物理状态实现0和1,技术上容易做得比较可靠,在传输和运算的过程中,由于受到干扰而发生错误的可能性较小;计数符号的减少带来运算法则的简化,采用二进制后,计算机运算电路的设计会大为简化。现代计算机不仅具有数值运算能力,同时也有很强的逻辑处理能力,二进制中的两个计数符号与逻辑中真值(true)、假值(false)有很简单的对应关系。基于这些原因,现代计算机的内部计数均采用二进制。回顾现代计算机不算很长的发展历史,其实可以发现,在其发展初期时使用的并非二进制计数制。1946年诞生的世界上第一台通用电子数字计算机ENIAC采用的就是十进制计数制。1949年建成的离散变量自动电子计算机(electronic discrete variable automatic calculator, EDVAC),经美籍匈牙利数学家冯·诺伊曼(von Neumann)的建议,才正式开始使用二进制计数制。
在现代计算机中,组成二进制数的每个0或1被称做一个二进制位(bit,读做“比特”,写做“b”),每8个二进制位组成的单位被称为一个字节(byte,写做“B”)。位是计算机中最小的数据单位。例如,二进制数1011101是一个由7个二进制位组成;二进制数01011101由8个二进制位组成,因而构成一个字节。