4.1 数据的表示方法
计算机能够处理数值、文字、声音、图像等信息。读者也许会问,为什么作为电子设备的计算机能处理那么多复杂的信息呢?实际上,当把这些信息转换成计算机能识别的形式就能进行处理。目前计算机中所有的信息都用“0”和“1”两个数字符号组合的二进制数来表示。数值、图形、文字等各种形式的信息,需要计算机加工处理时,首先必须按一定的法则转换成二进制数。本节将首先以常用的十进制为出发点,来讨论二进制、八进制及十六进制的特点,然后介绍各种进制数之间的转换方法。
4.1.1 十进制
进位计数制是一种计数的方法,习惯上最常用的是十进制计数法。十进制数的每位数可以用下列10个数码之一来表示:0、1、2、3、4、5、6、7、8、9。十进制数的基数为10,基数表示进位制所具有的数码的个数。
十进制数的计数规则是“逢十进一”,也就是说,每位累计不能超过9,计满10就应向高位进1。
4.1.2 二进制
计算机中为了便于存储及计算的物理实现,采用了二进制。二进制数的基数为2,只有0、1两个数码,其计数规则是“逢二进一”,即每位计满2就向高位进1,就好比数数一样,但不同于十进制的是,数到1的时候就要进位,也就是:0,1,10(进位,等同于十进制的9到10),11,100(等同十进制99到100)……。
二进制数运算规则简单,便于电路实现,它是数字系统中广泛采用的一种数制。但因二进制表示一个数时,所用的位数比用十进制数表示的位数多,人们读写很不方便,容易出错。因此常采用八进制或十六进制。C语言程序设计中就经常会用到这两种进制。
4.1.3 八进制
八进制数制的计数规则是逢八进一,以0~7循环的方式计数,如:0,1,2,3,4,5,6,7,10,11,12…。八进制每逢数到7的时候就要像十进制那样进位。在C语言中,通常使用以0打头的数字表示八进制,例如“014、027”等。
八进制广泛应用于本计算机系统,如PDP-8、ICL 1900和IBM大型机使用的12位、24位以及36位,它们都是以八进制为基础,简明的显示整个机器。
4.1.4 十六进制
十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A、B、C、D、E、F分别表示十进制数字10、11、12、13、14、15。十六进制的计数规则是“逢十六进一”。
在C语言中是在数的前面加数字0和字母X即0X来表示。例如:(12AF)16就是表示一个十六进制数,在C语言中它表示为0x12AF。
由此可得出:十进制、八进制、二进制与十六进制的特征对照表如表4-1所示。
表4-1 二进制、八进制、十进制与十六进制的特征对照表