计算机系统:基于x86+Linux平台
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 数制和编码

2.1.1 信息的二进制编码

数据是计算机处理的对象。从不同的处理角度看,数据有不同的表现形态。从外部形式的角度看,计算机可处理数值、文字、图形、声音、视频以及各种模拟信息,它们被称为感觉媒体。从算法描述的角度看,有图、表、树、队列、矩阵等结构类型的数据。从高级语言程序员的角度看,有数组、结构、指针、实数、整数、字符和字符串等类型的数据。无论以何种形态出现,在计算机内部数据最终都由机器指令处理。从机器指令的角度看,只有整数、浮点数和位串这几种简单数据类型。

计算机内部处理的所有数据都必须是数字化编码的数据。现实世界中的感觉媒体信息由输入设备转化为二进制编码表示,因此,输入设备必须具有离散化和编码两方面的功能。因为计算机中用来存储、加工和传输数据的部件位数有限,所以计算机只能表示和处理离散信息。数字化编码过程,就是对感觉媒体信息进行采样,将现实世界中的连续信息转换为计算机中的离散样本信息,然后对样本信息用0和1进行数字化编码的过程。所谓编码,是指用少量简单的基本符号,对大量复杂多样的信息进行一定规律的组合。基本符号的种类和组合规则是信息编码的两大要素。电报码中用4位十进制数字表示汉字、从键盘上输入汉字时用汉语拼音(即26个英文字母)表示汉字等,都是编码的典型例子。

计算机内部采用二进制编码方式的原因有以下几点。

• 二进制只有两种状态,使用有两个稳定状态的物理器件即可表示二进制数的每一位,而制造有两个稳定状态的物理器件要比制造有多个稳定状态的物理器件容易得多。例如,高低两个电位、脉冲的有无、脉冲正负极性等均可方便、可靠地表示0和1。

• 二进制的编码、计数和运算规则都很简单,可用开关电路实现,简便易行。

• 两个符号1和0正好对应逻辑命题的两个值“真”和“假”,这为实现逻辑运算和程序中的逻辑判断提供了便利条件,特别是能通过逻辑门电路方便地实现算术运算。

采用二进制编码将各种媒体信息转换成数字化信息后,可在计算机内部进行存储、运算和传送。在高级语言程序设计中,通常利用图、树、表和队列等数据结构进行算法描述,并以数组、结构、指针和字符串等数据类型说明处理对象,但将高级语言程序转换为机器语言程序后,每条机器指令的操作数只能是4种基本数据类型,即无符号定点整数、带符号定点整数、浮点数和表示非数值数据的位串,如图2.1中虚线框内所示。

图2.1 计算机外部信息与内部数据的转换

指令所处理的数据类型分为数值数据和非数值数据两种。数值数据可用来表示数量的多少,可比较大小,分为整数和实数,整数又分为无符号整数和带符号整数。在计算机内部,整数用定点数表示,实数用浮点数表示。非数值数据是没有大小之分的位串,不表示数量的多少,主要用来表示字符数据和逻辑数据。

在日常生活中,常使用带正负号的十进制数表示数值数据,如6.18、-127等。但这种形式的数据在计算机内部难以直接存储、运算和传输,仅用来作为程序的输入或输出形式,以方便用户从键盘等输入设备上输入数据或从屏幕、打印机等输出设备上输出数据,它不是计算机内部进行数据运算和数据传输的主要表示形式。

在计算机内部,数值数据的表示方法有两大类:一种是直接用二进制数表示;另一种是采用二进制编码的十进制数(Binary Coded Decimal Number,BCD码)表示。

表示一个数值数据时要确定三个要素:进位计数制、定/浮点表示和编码规则。任何一个给定的二进制0/1序列,在未确定它采用何种进位计数制、定点还是浮点表示以及编码规则之前,无法确定它所代表的数值数据的值。